簡體   English   中英

如何一次打開兩個ServerSocket

[英]How can I Open Two ServerSocket at atime

我有一個要求,我需要一次打開兩個ServerSocket,然后連續監聽它們各自的套接字。

這些都可以單獨工作,但是我需要一起工作。

while(true){
    Socket socket = serversocket1.accept()
    new SocketProcessor(socket).start(); 
}

while(true){
    Socket socket = serversocket2.accept()
    new AnotherSocketProcessor(socket).start(); 
}

我怎樣才能做到這一點?

您可以從這里參考。 您必須使用多線程。

使用多線程在Java服務器中同時偵聽兩個端口

您考慮過多線程嗎?

首先,我們創建一個實現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 ();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM