Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 如何从服务器向多个连接的客户端中的选定客户端发送响应?_Java_Sockets - Fatal编程技术网

Java 如何从服务器向多个连接的客户端中的选定客户端发送响应?

Java 如何从服务器向多个连接的客户端中的选定客户端发送响应?,java,sockets,Java,Sockets,我正在使用套接字编程开发一个应用程序。在这个应用程序中,服务器可以连接到多个客户端。当服务器发送响应消息时,它会发送到任何一个连接的客户端。但我想将其发送到特定的选定客户端。那么我如何实现它呢?我是socket编程新手。请帮助我解决这个问题。在advanced中,感谢您调用serverSocket.accept,当客户端连接到服务器时,accept方法返回一个socket对象,您通过这个socket对象与客户端通信 您所要做的一切就是创建一个列表myClientSockets 在调用Socket

我正在使用套接字编程开发一个应用程序。在这个应用程序中,服务器可以连接到多个客户端。当服务器发送响应消息时,它会发送到任何一个连接的客户端。但我想将其发送到特定的选定客户端。那么我如何实现它呢?我是socket编程新手。请帮助我解决这个问题。在advanced

中,感谢您调用serverSocket.accept,当客户端连接到服务器时,accept方法返回一个socket对象,您通过这个socket对象与客户端通信

您所要做的一切就是创建一个列表myClientSockets 在调用Socket client=serverSocket.accept之后,只需将客户机对象添加到myClientSockets。现在,您可以选择要与之通信的客户端

编辑:

假设你有那样的东西

List<Socket> myClientSockets = new ArrayList<Socket>();

while(true)
{
    Socket client = serverSocket.accept()
    myClientSockets.add(client);
}
此外,您还可以迭代myClientSockets,并使用foreach for循环获取满足条件的客户端套接字

然后你可以得到输出流


您可以管理服务器端点上已连接客户端的列表。收到消息后,遍历列表,对照客户端列表检查规则,并将消息发送到所需的客户端。更多信息,请尝试此项。我是套接字编程新手,请详细说明如何从列表myClientSocket中选择客户端并发送消息?以及如何从列表myClientSocket中的套接字初始化outputstream。我建议使用map而不是列表。在serverSocket.accept之后,您可以读取包含有关客户端信息的字符串形式的socket,然后使用如下说明将其放入映射中:clients.putclientId,socketToClient。或者,您可以根据套接字地址ip等提供的信息创建clientsID。这完全取决于此通信的目的。
Socket obtainedSocket = myClientSockets.get(myIndex); //you choose the index
OutputStream obtainedSocketOutputStream = obtainedSocket.getOutputStream()