在C/C++中检查打开的端口

Sea*_*den 3 c c++ sockets network-programming

关于验证套接字端口的可访问性和可访问性的主题还有其他 问题.

如何在C/C++中动态查找端口?

我想要完成的基本过程是这样的:

  1. 客户启动
  2. 客户端找到开放端口XYZ并侦听它.
  3. 客户端通过UDP数据报将基本的"我在这里"消息发送到具有端口信息的服务器
  4. 客户端和服务器可以通信.

我知道如果您选择任意端口号并尝试绑定它,您可以完成类似的操作.如果失败,请递增数字并再次尝试,直到您获得成功的"绑定".

有没有更优雅的方式来做到这一点?这似乎有点hacky.

小智 12

如果绑定到端口0,将分配随机端口.然后getsockname()可用于查找实际使用的端口.