我在桌面端运行了一个套接字监听器java,我有一个移动客户端,它能够连接到这个套接字服务器而没有任何问题。当客户端尝试访问新连接时,我希望单独为每个客户端建立套接字连接。我从这个链接中读到了Reference link for multiple connection detection
关于socket如何区分多个连接。提到基于在套接字服务器上检测到的客户端连接的IP和PORT,并且每个连接的连接都是唯一的。每个连接的客户端端口都不同。我读过,我们可以调用getpeername
来获取套接字服务器端的客户端连接的IP和PORT。但是,我在Java中看不到任何这样的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和PORT?或者我需要使用不同的方法吗?
答案 0 :(得分:6)
当服务器accept
成为连接时,您会得到代表该连接的Socket
。 Socket
有一个getInetAddress()
方法会返回远程的地址,还有一个相应的getPort()
方法会返回远程端口。
例如:
Socket newSock = s.accept();
InetAddress addr = s.getInetAddress();
int port = s.getPort();