我有一个基于桌面端运行的套接字监听器 java,我有一个移动客户端,它能够毫无问题地连接到这个套接字服务器。当客户端尝试访问新连接时,我想为每个客户端分别建立套接字连接。我从这个链接中读到,Reference link for multiple connection detection
关于套接字如何区分多个连接。提到基于在套接字服务器上检测到的客户端连接的 IP 和端口,并且连接对于每个连接都是唯一的。每个连接的客户端端口都会不同。我读到,我们可以调用 getpeername
在套接字服务器端获取客户端连接的 IP 和 PORT。但是,我在 Java 中看不到任何此类 API,然后找到了以下 API。
ServerSocket server = new ServerSocket(8080);
System.out.println("server.getInetAddress();: " + server.getInetAddress());
但是,它总是返回 server.getInetAddress():- 0.0.0.0/0.0.0.0
当移动客户端(模拟器)调用此套接字时。
有人可以告诉我,为什么我不能在套接字端使用上述 InetAddress API 获取客户端的 IP 和端口?或者我需要使用不同的方法吗?
最佳答案
当服务器接受
一个连接时,您会得到一个代表该连接的Socket
。 Socket
有一个 getInetAddress()
将返回 Remote 地址的方法,以及相应的 getPort()
返回远程端口的方法。
例如:
Socket newSock = s.accept();
InetAddress addr = s.getInetAddress();
int port = s.getPort();
关于java - 如何在服务器套接字端检索客户端的 IP 和端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655187/