Checking for open ports in C/C++
There have been other questions regarding the subject of verifying the accessibility and accessibility of socket ports.
How would one go about looking for a port to listen on dynamically in C/C++?
The basic process I'开发者_开发知识库m trying to accomplish is this:
- Client starts
- Client finds open port XYZ and listens on it.
- Client transmits a basic 'I Am Here' message via UDP Datagrams to a server with the port information
- Client and Server can communicate.
I know you can accomplish something like this if you pick an arbitrary port number and try binding to it. If it fails, increment the number and try again until you get a successful 'bind'.
Is there a more elegant way to do this? It seems kind of hacky.
If you bind to port 0, a random port will be allocated. Then getsockname()
may be used to find out the actual port used.
精彩评论