Pathologically Eclectic Rubbish Lister | |
PerlMonks |
Re^3: Async socket connectionby Corion (Patriarch) |
on Feb 09, 2017 at 08:08 UTC ( [id://1181491]=note: print w/replies, xml ) | Need Help?? |
For completeness, I'll replicate the drawing here, just in case that other resource goes away:
From that diagram resp. my interpretation of it, you don't have "SEND" and "RECEIVE" sockets, but some sockets that are listening for and accepting incoming socket connections, and some sockets that are used to talk to the listening sockets. The listening sockets are listening on port 8000 (PC2) and port 8010 (PC1). You also use the terms "server" and "client", even though that distinction seems somewhat arbitrary to me because both machines seemm to be able to initiate connections to each other. I'm not clear on whether your current two programs client.pl and server.pl are running on both machines or whether client.pl only runs on PC1 and server.pl only runs on PC2. I would conceptually split up the "STAT" part separate from the "ADD" part. You can combine the server parts of both if the general format of an incoming message is the same. The easiest approach to combine the logic of the listeners and the senders in a single program is to launch for threads, two listener threads and two sender threads, or just two threads if you only need a listener on port 8000 and a sender to port 8010 (PC2) or a listener on port 8010 and a sender to port 8000 (PC1). The next step would be to look at AnyEvent or IO::Select to manage the writing to sockets and the reading from sockets. AnyEvent gives you callbacks for each socket when it's ready to write more data or when it's ready to read more data. Personally, I would go with the AnyEvent approach because that avoids race conditions.
In Section
Seekers of Perl Wisdom
|
|