Java 在一个服务器套接字和多个套接字之间通信

Java 在一个服务器套接字和多个套接字之间通信,java,sockets,networking,Java,Sockets,Networking,我试图让我的ServerSocket与多个套接字进行通信,但我不知道如何进行通信,到目前为止,我意识到调用ServerSocket.accept()将返回一个套接字来在服务器和第一个套接字之间进行通信,但当第二个和第二个套接字尝试连接到ServerSocket时,它允许它们连接,但是没有一个新的套接字与它们通信,那么,如何与第二个套接字通信呢?简单地说,如果要同时与两个套接字通信,需要生成一个新线程 ServerSocket ss = new ServerSocket(... params ..

我试图让我的ServerSocket与多个套接字进行通信,但我不知道如何进行通信,到目前为止,我意识到调用ServerSocket.accept()将返回一个套接字来在服务器和第一个套接字之间进行通信,但当第二个和第二个套接字尝试连接到ServerSocket时,它允许它们连接,但是没有一个新的套接字与它们通信,那么,如何与第二个套接字通信呢?简单地说,如果要同时与两个套接字通信,需要生成一个新线程

ServerSocket ss = new ServerSocket(... params ...);
while(isRunning) {
    Socket socket = ss.accept();
    Runnable r = new SocketHandler(socket); // write the socket handler class
    Thread t = new Thread(r);
    t.start();
} 

很明显,你可以在这方面做很多很多改进。最明显的是保留r和/或t的引用,以便更好/更严格地控制它们,并能够随意阻止它们。但是这些功能远远超出了这个问题的范围。

好吧,所有的接受都可以在您的服务器线程上完成。您只需要将由
ss.accept()
生成的套接字传递给处理程序线程。因此,假设对accept()进行顺序调用会不断返回不同的套接字,以完成与不同设备的通信?没错-对
ss.accept()
的每次调用都会生成不同的套接字。呼叫将被阻止,直到有新的套接字可用。它不会两次返回同一个套接字。