客户端-服务器多线程聊天应用程序。客户端到客户端的通信

Posted

技术标签:

【中文标题】客户端-服务器多线程聊天应用程序。客户端到客户端的通信【英文标题】:Client-Server multithreading chat app. client to client communication 【发布时间】:2019-04-03 23:02:08 【问题描述】:

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

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

//通信线程类在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 个客户端进行通信。任何帮助,将不胜感激。 谢谢

【问题讨论】:

我没有遵循代码。请发帖minimal reproducible example。我假设 2 个客户端通过服务器进行通信。 【参考方案1】:

我让它工作了。我所要做的就是添加一个 Runnable 类,该类读取客户端消息并将其传达给另一个客户端。所以我只是在我的客户端类中丢失了一个线程。 谢谢。

【讨论】:

以上是关于客户端-服务器多线程聊天应用程序。客户端到客户端的通信的主要内容,如果未能解决你的问题,请参考以下文章

多客户端聊天程序,向所有客户端广播聊天?

C#多线程聊天服务器,处理断开连接

多线程如何实现tcp多客户端聊天

java实现聊天室是怎么做到的?

多线程+socket实现多人聊天室

Java网络编程基础---基于TCP的简单聊天系统