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 !!!");
                        }
                    }
                    }).start();
                        iline=inp.nextLine();
                        out.writeUTF(iline);

 if(socket.isClosed()||socket.isOutputShutdown()||socket.isInputShutdown()){
                    System.out.println("DED");
                    System.exit(0);
                }
        } 
    } 
    catch(IOException i) 
    { 
        System.out.println(i); 
    } 
} 

public static void main(String args[]) 
{ 
    Server server = new Server(5000); 
} 
} 

客户端代码

      import java.net.*; 
      import java.io.*;
      import java.util.Scanner; 
      class Client{

private Socket socket =null;
private DataInputStream inp=null;
private DataOutputStream out=null;
private Scanner in=null;
String line="";
String iline="";
Client(String address,int port)
{
    try{

        socket = new Socket(address,port);
        in= new Scanner(System.in);
        out = new DataOutputStream(socket.getOutputStream());
        inp = new DataInputStream(new BufferedInputStream(socket.getInputStream()));

        while(true){

            line=in.nextLine();
            out.writeUTF(line);
            new Thread(new Runnable(){

                public void run() 
                {

                    try{
                    while(true){
                    iline=inp.readUTF();
                    System.out.println("Server : "+iline);
                    if(socket.isClosed()||socket.isOutputShutdown()||socket.isInputShutdown()){
                    System.out.println("DED");
                    System.exit(0);
                }                       
                    }
                    }
                    catch(Exception e){
                        System.out.println("Exception !!!");
                    }
                }

            }).start();
                    if(socket.isClosed()||socket.isOutputShutdown()||socket.isInputShutdown()){
                    System.out.println("DED");
                    System.exit(0);
                }
        }   

    }
    catch(UnknownHostException u) 
        { 
            System.out.println(u); 
        } 
    catch(Exception e){
        System.out.println("EXCEPTION!!!");
    }
}
 }


 class ClientSocket{

public static void main(String...args){
    Client obj = new Client("127.0.0.1", 5000);

   }

   }
穆克什·维尔马

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

Java中的多线程客户端服务器聊天应用程序

来自分类Dev

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

来自分类Dev

Java中的客户端服务器聊天应用程序,无需广播

来自分类Dev

将MySQL连接到Java客户端/服务器应用程序

来自分类Dev

Java客户端/服务器应用程序将不会读取Line()

来自分类Dev

Java中客户端/服务器应用程序的HTTP或FTP

来自分类Dev

Java客户端服务器应用程序,无法发送ArrayList

来自分类Dev

Java客户端服务器应用程序-地址已在使用中:connect

来自分类Dev

Android和Java蓝牙客户端服务器应用程序

来自分类Dev

Android-Java客户端-服务器-AsyncTask崩溃应用程序中的Toast

来自分类Dev

Java-内存不足客户端/服务器应用程序

来自分类Dev

部署客户端/服务器Java应用程序

来自分类Dev

在Java中的简单客户端/服务器应用程序中进行读/写

来自分类Dev

如何在JAVA中运行服务器-客户端应用程序

来自分类Dev

Android和Java蓝牙客户端服务器应用程序

来自分类Dev

使用Java客户端和php服务器制作聊天应用

来自分类Dev

JAVA上的服务器-客户端-聊天应用示例

来自分类Dev

使用Java客户端和PHP服务器制作聊天应用

来自分类Dev

Java 客户端-服务器应用程序抛出“java.net.SocketException: Connection reset”异常

来自分类Dev

如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

来自分类Dev

如何在Java中使用RUDP创建简单的服务器客户端应用程序?

来自分类Dev

如何从服务器在客户端计算机中执行Java应用程序?

来自分类Dev

Java服务器/客户端应用程序仅在按Enter键时显示消息

来自分类Dev

连接客户端服务器Java

来自分类Dev

Java 服务器-客户端连接重置

来自分类Dev

如何使用客户端服务器Java程序连接2台计算机

来自分类Dev

Java多客户端服务器程序

来自分类Dev

Java简单服务器客户端程序

Related 相关文章

  1. 1

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

  2. 2

    Java中的多线程客户端服务器聊天应用程序

  3. 3

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

  4. 4

    Java中的客户端服务器聊天应用程序,无需广播

  5. 5

    将MySQL连接到Java客户端/服务器应用程序

  6. 6

    Java客户端/服务器应用程序将不会读取Line()

  7. 7

    Java中客户端/服务器应用程序的HTTP或FTP

  8. 8

    Java客户端服务器应用程序,无法发送ArrayList

  9. 9

    Java客户端服务器应用程序-地址已在使用中:connect

  10. 10

    Android和Java蓝牙客户端服务器应用程序

  11. 11

    Android-Java客户端-服务器-AsyncTask崩溃应用程序中的Toast

  12. 12

    Java-内存不足客户端/服务器应用程序

  13. 13

    部署客户端/服务器Java应用程序

  14. 14

    在Java中的简单客户端/服务器应用程序中进行读/写

  15. 15

    如何在JAVA中运行服务器-客户端应用程序

  16. 16

    Android和Java蓝牙客户端服务器应用程序

  17. 17

    使用Java客户端和php服务器制作聊天应用

  18. 18

    JAVA上的服务器-客户端-聊天应用示例

  19. 19

    使用Java客户端和PHP服务器制作聊天应用

  20. 20

    Java 客户端-服务器应用程序抛出“java.net.SocketException: Connection reset”异常

  21. 21

    如何编写使用相互ssl身份验证的Java客户端和服务器应用程序?

  22. 22

    如何在Java中使用RUDP创建简单的服务器客户端应用程序?

  23. 23

    如何从服务器在客户端计算机中执行Java应用程序?

  24. 24

    Java服务器/客户端应用程序仅在按Enter键时显示消息

  25. 25

    连接客户端服务器Java

  26. 26

    Java 服务器-客户端连接重置

  27. 27

    如何使用客户端服务器Java程序连接2台计算机

  28. 28

    Java多客户端服务器程序

  29. 29

    Java简单服务器客户端程序

热门标签

归档