我有一个服务器 (Java) 和一些客户端 (c++),它们通过套接字连接。 我想自动设置端口。 假设 IP 已知。
在 Java 方面,我可以:
ServerSocket s = new ServerSocket(0);
现在我在服务器上有一个随机的空闲端口。
我如何在 C++ 端知道服务器监听的端口是什么?
最佳答案
我认为这是不可能的,如果你想与服务器建立连接,你必须知道服务器在哪个端口监听,有像 nmap 这样的程序可以显示服务器中打开的端口列表,但是服务器可以同时有很多开放的端口 那么,你怎么知道你的服务器开放的端口是什么?在任何情况下,调用外部工具、读取和解析其输出都太慢且效率低下。为什么需要随机端口服务?
其他选项可以在服务器端调用 s.getLocalPort()
获取打开的套接字,并通过 UDP 将其发送给网络中的任何监听节点,并重新编程客户端端收听广播,当它收到消息时,检查它是否是端口号并使用该端口连接到服务器。
关于java - C++/Java 套接字自动端口分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119701/