簡體   English   中英

服務器未從客戶端收到更多消息

[英]Server doesn't receive more messages from client

我正在創建一個聊天應用程序。 客戶端向服務器發送消息,服務器僅接收第一條消息,但沒有更多。

服務器讀取線程

private void read(ObjectInputStream ois) {
    new Thread() {
        @Override
        public void run() {
            try {
                String[] contents = (String[]) ois.readObject();
                MainContainer.gh.add(new JLabel(contents[0] + " : " + contents[1]));
            } catch (Exception ex) {
                System.out.println("Sorry.");
            }
        }
    }.start();
}

客戶端寫方法

public void write(String[] contents) {
    try {
        oos.writeObject(contents);
    } catch (Exception ex) {
        System.out.println("Sorry");
    }
}

提前致謝。 如果您需要額外的代碼,可以提出要求。 謝謝。

您的代碼沒有循環。

因此,它接收第一個名為contents數組,然后退出。

您應該添加與此類似的循環

while (true) {
    // Receive messages
}

服務器代碼必須循環運行。 從內存中,服務器線程應運行如下內容

while (running) {
  // block until next request
  Socket socket = serverSocket.accept();
  InputStream in = socket.getInputStream();
  OutputStream out = socket.getOutputStream();
  // Read from in. Write to out. Your code here...
}

running通常是一個volatile變量,可以將其設置為從其他線程發出該程序應停止的信號。 或者您可以中斷線程。 另外,准備讓用戶配置套接字超時。

暫無
暫無

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

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