Java客户端/服务器聊天应用程序

时间:2019-11-21 11:33:50

标签: java client-server

这是我创建的应用程序,但存在以下问题:

  1. 客户端可以向其他客户端发送消息,但它们也收到与echo相同的消息。因此,我只希望能够发送一条消息并获得所有关联方的答复,而没有我自己的消息。

  2. 什么是处理与客户端或服务器断开连接的最佳方法?

  3. 我并没有要求答案(只是指示),而是允许客户发送文件的最佳方法。

2 个答案:

答案 0 :(得分:1)

1-)您可以在发送消息之前在for子句中检查用户。

for (ClientHandler client: Server.activeClients) {
   if (!client.name.equals(this.name)) {
      client.dos.writeUTF(this.name + "=" + received);
   }
}

2-)您不需要使用while(true)更改它,以便在用户断开连接后即可完成。

while (!s.isClosed()) {

3-)首先,您需要发送文件名和文件大小,然后才能在发送方中发送文件的字节。接收者将占用字节,直到达到文件大小,并将其保存为具有给定名称的文件。

答案 1 :(得分:0)

  1. 您可以尝试类似的操作

    for (ClientHandler client : Server.activeClients) {
        if(client!=this){
            client.dos.writeUTF(this.name + "=" + received);
        }
    }