Java 客户端服务器聊天应用程序失去连接

我最近在 java 中编写了一个套接字通信程序,其中两个线程在每个服务器和客户端并发运行,处理对套接字的读写操作,允许双方连续发送和接收消息。


问题是客户端或服务器停止接收来自另一端的通信,然后一段时间后它们都停止工作。我不知道出了什么问题以及连接如何断开:/


服务器代码


  import java.net.*; 

  import java.io.*; 

  import java.util.Scanner; 


 public class Server 


private Socket          socket   = null;  

private ServerSocket    server   = null; 

private DataInputStream in       =  null; 

private DataOutputStream out       =  null;

private Scanner inp       =  null;

String line = "";

String iline = "";      


public Server(int port) 

    try

    { 

        server = new ServerSocket(port); 

        System.out.println("Server started"); 


        System.out.println("Waiting for a client ..."); 


        socket = server.accept(); 

        System.out.println("Client accepted"); 


        // takes input from the client socket   

        out=new DataOutputStream(socket.getOutputStream());         


        in = new DataInputStream(new 

  BufferedInputStream(socket.getInputStream()));

        inp = new Scanner(System.in);           




        while (true) 

        { 




                new Thread(new Runnable(){


                    public void run() 

                    {

                        try{

                        while(true){

                            line = in.readUTF(); 

                            System.out.println("Client : "+line);


  if(socket.isClosed()||socket.isOutputShutdown()||socket.isInputShutdown()) 

    {

                            System.out.println("DED");

                            System.exit(0);

                }


                        }

                        }

                        catch(Exception e){

                        System.out.println("Exception !!!");

                        }

                    }

                    })


慕田峪4524236
浏览 184回答 1
1回答

慕的地6264312

只是初步运行您的代码,我看到的是第一个 while(true){} ,您正在生成一个调用其上的 start 方法的线程。在您启动读取线程的那一刻,主线程检查套接字条件并继续前进。由于在您的第一个 while(true) 中有一个 true ,一个新线程再次产生,并且一直持续到套接字关闭,程序因 system.exit 调用而终止。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java