Sending UDP packets via the internet and between processes?
EHuckert
edgar.huckert at huckert.com
Sat May 12 21:00:37 UTC 2018
On Saturday, 12 May 2018 at 09:29:43 UTC, Dustin Keeting wrote:
> I'm setting up two applications, a client and a server, that
> will exchange some data back and forth. The server may be on
> the same machine as the client, or it may not be, or there
> might be multiple clients which may or may not be on the same
> machine. Both applications will be running other code and I'd
> like them to be able to access a list of received packets
> rather than waiting for them to come in.
>
> What do I need to do to set this up? This is as far as I've got:
>
> ushort port = 3000;
>
> auto sender = new UdpSocket();
> sender.blocking = false;
> auto address = new InternetAddress(port);
> sender.bind(address);
>
> ubyte[Packet.sizeof] bytes;
> Packet* packet = cast(Packet*)bytes.ptr;
> //not sure how to convert a struct to big endian easily?
>
> sender.send(bytes);
>
> I'm not really sure how to receive sent bytes or if I need to
> put in ip addresses to make it work online? I've looked at a
> couple of examples and I've gotten some html to work by
> accessing a localhost port, but I've always struggled with
> networking, so if someone can help explain how I'm meant to
> connect sockets that may be online or on the same machine...
> that would be a big help!
You may look at my Web page
http://www.huckert.com/ehuckert/huckertp112.html under
the heading "Sockets". You will find there a working UDP sender
(a client) and
a working receiver (a server). Both programs are written in D. I
use UDP heavily for
logging. For the communication between two processes on the same
machine I would rather recommend TCP instead of UDP. To connect
sockets on the same machine it
is normally sufficient to use "localhost" as the hostname or
"127.0.0.1". From time
to time I encounter a small problem: the firewalls on the
machines may block the communication on the ports. For tests I
prefer switching off the firewalls.
E.Huckert
More information about the Digitalmars-d-learn
mailing list