The setting: I want to write a point-to-point Connection
class that, when used, does not differentiate between server and client. The first host which calls connect()
shall become the server waiting for the client to connect and the second shall become the client that connects to the server.
In order to do that the connect()
method first needs to check for a listening server. a) The first time this happens no server is found and the party calling connect()
starts listening on localhost
and the configured port for an incoming connection. b) The second party calling connect()
also checks the remote host on the given port, recognizes the server and connects to it.
This is not too hard using TCP since TcpClient.Connect()
throws an exception when no connection could be established. Therefore I know when I'm the first. Since I use reliable LAN only, I wanted to use UDP, however.
My problem: How can I determine whether an UDP server socket is waiting for incoming data.
Ideally I would like to use the asynchronous network API directly afterwards. Instead of dealing with listening threads all by myself.