Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ServerSocket通过TCP查找连接到服务器的客户端数量及其IP(详细信息)?_Java_Multithreading_Sockets_Networking_Tcp - Fatal编程技术网

Java 如何使用ServerSocket通过TCP查找连接到服务器的客户端数量及其IP(详细信息)?

Java 如何使用ServerSocket通过TCP查找连接到服务器的客户端数量及其IP(详细信息)?,java,multithreading,sockets,networking,tcp,Java,Multithreading,Sockets,Networking,Tcp,我有一个服务器程序正在我的电脑上运行。服务器程序使用套接字连接到许多客户端。是否随时都可以找到哪个具有witch IP的客户端连接到服务器?或者有多少客户端连接到服务器 无论怎样,都可以随时[使用]我自己的ServerSocket,找出哪个具有witch IP的客户端连接到服务器 当你接受一个套接字时,你可以得到它的远程IP地址 Sockets socket = serverSocket.accept(); SocketAddress address = socket.getRemoteSock

我有一个服务器程序正在我的电脑上运行。服务器程序使用套接字连接到许多客户端。是否随时都可以找到哪个具有witch IP的客户端连接到服务器?或者有多少客户端连接到服务器

无论怎样,都可以随时[使用]我自己的ServerSocket,找出哪个具有witch IP的客户端连接到服务器

当你接受一个套接字时,你可以得到它的远程IP地址

Sockets socket = serverSocket.accept();
SocketAddress address = socket.getRemoteSocketAddress();

如果有多个客户机从该IP连接,这还不足以说明区别。如果这是一个问题,您可以让客户端发送一个唯一的id,以便您知道它是哪个客户端。

您有哪种类型的服务器?是JEE,使用netty这样的框架,还是你自己编写了ServerSocket处理代码?@PeterLawrey我自己的ServerSocket。你需要在这里定义你的术语。如果要计算连接数,只需在接受一个计数器时增加一个计数器,在关闭时减少一个计数器即可。如果要统计客户,需要定义客户的标识。除非客户端发送某种UID,否则您所拥有的只是远程对等地址,这可能是一个NAT设备的外部地址,后面有数百个客户端,因此它没有真正的帮助。谢谢您的回复。这就是问题所在,因为我需要从seam IP找到客户机。是否有任何方法可以确定有多少客户端连接到ServerSocket?客户端仅连接到一个套接字。如果您想知道连接到您接受的套接字的所有客户端,您需要将它们保存在一个集合中。一个“套接字”等于一个“连接”(或一个“侦听器”)。请注意,单个客户端可以打开多个连接。还请注意,您可以让多个客户端看起来来自同一IP地址(但可能是不同的客户端)