java - 客户端-服务器多线程聊天应用程序。客户与客户的沟通

标签 java multithreading sockets datainputstream dataoutputstream

所以我有一个家庭作业,要在一台服务器上创建 2 个客户端,并在一台服务器上进行通信。客户端 1 和客户端 2 可以与服务器通信,但我需要 2 个客户端与每个客户端通信,我被难住了??

我很确定我使用 ArrayList 添加客户端并使用 for 循环来遍历它们是正确的。我只是不知道如何连接客户端以相互通信。 这是我的代码。

//通信线程类在Server.class文件中。 while true 循环中的 for 循环应该使 2 个客户端能够通信,但事实并非如此?

class ComThreads implements Runnable{
              private Socket s;
              java.util.Date date=new java.util.Date();

              public ComThreads(Socket s)
              {
                this.s=s;
              }

              public void run()
              {     try {
                  DataInputStream inputFromClient = new DataInputStream(
                        s.getInputStream());
                    DataOutputStream outputToClient = new DataOutputStream(
                        s.getOutputStream());

                    while(true) {
                            String  line=inputFromClient.readUTF();
                    for(int i=0; i < clientList.size(); i++) {  
                        if(clientList.get(i).equals(s)) {
                    Socket tempSoc=clientList.get(i);
                    DataOutputStream msOut=new DataOutputStream(tempSoc.getOutputStream());
                    msOut.writeUTF(line);
                    //outputToClient.writeUTF(message);
                    msOut.flush();
                        }

                    }
                    Platform.runLater(()->{
                        ta.appendText(line);
                        ta.appendText("\n");
                    });


                    }

                } catch (IOException e) {
                  e.printStackTrace();
                }finally {
                    try {
                        s.close();
                    }catch(IOException e) {
                        // later
                    }

                }

              }

            }           

        }   

只需要 2 个客户端进行通信。任何帮助,将不胜感激。 谢谢

最佳答案

我成功了。我所要做的就是添加一个 Runnable 类来读取客户端消息并将其传递给其他客户端。所以我只是在我的客户端类中缺少一个线程。 谢谢。

关于java - 客户端-服务器多线程聊天应用程序。客户与客户的沟通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505539/

相关文章:

java - 如何判断数据库是否已关闭或不可用?

java - Erlang 需要很长时间才能计数?

c# - 异步客户端套接字未接收数据

java - 使用线程池创建一个等待来自客户端的消息的java服务器套接字

c# - Silverlight 3 可以打开套接字吗?

java - 在 Android 中使用 createScaledBitmap 创建缩放位图

java - 如何使用 JSoup 在包含特定属性值的 div 之后添加 <br>

c# - 仅在启动线程中分配的类宽整数是否可以安全读取其值?

vb.net - 如何创建动态线程数?

java - JButton 默认光标