This thread reminded me of a UDP joke. I'd tell you it but you probably 
wouldn't get it.

On 11 Oct. 2017 1:51 pm, Greg Keogh <gfke...@gmail.com> wrote:
There's always a better way and always a simpler way to do anything but not 
always both at the same time :-)

I find everything's getting more inferior and harder at the same time.

But the good news is that a sanity check using a TcpListener and TcpClient pair 
works the way I want between my work machine and the VM.

The server is a bit ugly because I need a background thread running to 
AcceptTcpClient<https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.accepttcpclient%28v=vs.110%29.aspx>
 and add them to a collection. There is no way to cancel that method, so when 
the process ends it just dies. The server uses IPAddress.Any so anyone can 
connect. Logging is written to the network stream of each known client. If a 
write fails then the client is assumed dead and removed from the collection.

The client just connects and reads bytes in a loop. There is no formal way I 
can find of cancelling this method either. I notice that many rapid writes from 
the server will arrive in the client via a single read, but I guess that's the 
way it's designed to work!

So it all works, and it's an acceptably small amount of code. It's ugly that 
there's no way of elegantly closing the server and client, the client can 
Close, but you have to catch errors to possibly know when to finish working.

GK

Reply via email to