What would be the best way of sending data directly to someone through their ip address? No servers involved.

As in, you type their ip address into this program, (a port?), and your message, and if they are running this program, they receive said message in the application.

Should I send packets, use some .NET state of the art class that I am unaware of that sends messages and such, or some other approach?

I'm looking for a direct way to send data from one computer to another, be it text, an image in the form of an array of bytes, or whatever.

Thanks.