簡體   English   中英

在Java上與一台服務器打開兩個端口連接

[英]Open two ports connection with one server on java

我想啟動一個服務器,該服務器同時偵聽兩個不同的端口,並對傳入的連接進行不同的處理(我根據端口啟動一個differnet從屬服務器)。 我做了這樣的事情:

public class ServeurMaitre {
public static ServerSocket serverSocket = null;
int poolSize = 15;
private ExecutorService pool = null;
ServeurMaitre(int port, int size){
    try {
        serverSocket = new ServerSocket(port, size);
        pool = Executors.newFixedThreadPool(poolSize);
        System.out.println("Serveur en marche. En attente des clients");

    } catch (IOException ex) {
        Logger.getLogger(ServeurMaitre.class.getName()).log(Level.SEVERE, null, ex);
    }
}

void ConnexionServeur() throws IOException {
    while(true) {               
        Socket cnx = serverSocket.accept();
        if (cnx.getLocalPort()==3333) {
            pool.execute(new EsclaveXML(cnx, this));
        }
        if(cnx.getLocalPort()==8000) {
            pool.execute(new EsclaveHTTP(cnx, this));
        }           
    }
}

public class Main{
public static void main(String[] args) throws IOException {
    ServeurMaitre serveur = new ServeurMaitre(8000, 1);
    ServeurMaitre serveur1 = new ServeurMaitre(3333, 1);
    serveur.Initialisation();
    serveur.ConnexionServeur();
    serveur1.ConnexionServeur();

}}

問題:到達端口3333的連接得到了很好的處理,但是到達8000的連接卻沒有得到處理。 有什么幫助嗎? 謝謝。

我認為,問題的原因是“ static serverSocket”變量。

您可以更改此行
公共靜態 ServerSocket serverSocket = null;

公共ServerSocket serverSocket = null;

暫無
暫無

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

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