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

标签 java sockets

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

最佳答案

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

例如:

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

关于java - 如何在服务器套接字端检索客户端的 IP 和端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655187/

相关文章:

java - 在 Java 中,我们应该在处理多个接口(interface)时使用泛型吗?

java - 是否可以使用 Jasper Reports 动态生成报告而不为每个报告生成 jasper?

java - 将两个不断增长的数字相加的最有效方法

c++ - 字符数组中的十六进制在写入套接字时导致随机字符

java - 是否可以在 Java 中强制对数据包进行分段?

sockets - Haxe:连接到远程主机

c - 将结构类型的变量发送到套接字

java - 通过 PHP 从 java 到 mySQL 的安全三层连接

java - 使用 Objectify 进行查询过滤

c# - 通过 TCP 套接字发送命令的最佳方式是什么?