如何在服务器套接字端检索客户端的IP和PORT?

时间:2014-02-09 04:14:04

标签: java sockets

我在桌面端运行了一个套接字监听器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?或者我需要使用不同的方法吗?

1 个答案:

答案 0 :(得分:6)

当服务器accept成为连接时,您会得到代表该连接的SocketSocket有一个getInetAddress()方法会返回远程的地址,还有一个相应的getPort()方法会返回远程端口。

例如:

Socket newSock = s.accept();
InetAddress addr = s.getInetAddress();
int         port = s.getPort();