我有一个需求,那就是我需要一次打开两个ServerSockets,并连续侦听这两个套接字各自的套接字。
它们单独工作很好,但我需要将它们一起工作。
while(true){
Socket socket = serversocket1.accept()
new SocketProcessor(socket).start();
}
while(true){
Socket socket = serversocket2.accept()
new AnotherSocketProcessor(socket).start();
}
我该怎么做呢?
发布于 2014-03-15 01:37:54
你可以从这里参考这个。你必须使用多线程...
Listening to two ports simultaneously in Java server using multithreading
发布于 2014-03-15 01:35:40
你有没有考虑过多线程?
首先,我们创建一个实现Runnable接口的类。
class SocketListenerRunnable implements Runnable {
ServerSocket serverSocket;
SocketProcessor socketProcessor;
public void setServerSocket (ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
public void setSocketProcessor (SocketProcessor socketProcessor) {
this.socketProcessor = socketProcessor;
}
public void run () {
while (true) {
Socket socket = serverSocket.accept ();
socketProcessor (socket).start ();
}
}
}
然后我们只在需要的时候使用它。
SocketListenerRunnable r1 = new SocketListenerRunnable ();
r1.setServerSocket (serverSocket1);
r1.setSocketProcessor (socketProcessor1);
Thread t1 = new Thread (r1);
t1.start ();
SocketListenerRunnable r2 = new SocketListenerRunnable ();
r2.setServerSocket (serverSocket2);
r2.setSocketProcessor (socketProcessor2);
Thread t2 = new Thread (r2);
t2.start ();
https://stackoverflow.com/questions/22411889
复制相似问题