Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的java客户机-服务器程序中,客户机如何向服务器发送连续消息而不从服务器接收回复消息?_Java_Sockets - Fatal编程技术网

在我的java客户机-服务器程序中,客户机如何向服务器发送连续消息而不从服务器接收回复消息?

在我的java客户机-服务器程序中,客户机如何向服务器发送连续消息而不从服务器接收回复消息?,java,sockets,Java,Sockets,当我以hello的形式从客户端向服务器发送一条消息时,它会打印并显示在服务器端,但当我从客户端发送另一条消息而不从服务器发送任何消息时,从客户端发送的消息直到从服务器发送消息后才会显示在服务器端。。。。请给我一个解决办法 服务器代码 public static void main(String[] args) throws Exception { ServerSocket ss=new ServerSocket(1234); Socket s=ss.accept();

当我以hello的形式从客户端向服务器发送一条消息时,它会打印并显示在服务器端,但当我从客户端发送另一条消息而不从服务器发送任何消息时,从客户端发送的消息直到从服务器发送消息后才会显示在服务器端。。。。请给我一个解决办法

服务器代码

public static void main(String[] args) throws Exception {   
    ServerSocket ss=new ServerSocket(1234);
    Socket s=ss.accept();
    DataInputStream din=new DataInputStream(s.getInputStream());
    DataOutputStream dout=new DataOutputStream(s.getOutputStream());
    InputStreamReader is=new InputStreamReader(System.in);
    BufferedReader br=new BufferedReader(is);
    String str="",str2="";
    while(true)
    {
        if((str=din.readUTF())!= null)
        {
            System.out.println(str);
        }
        str2=br.readLine();
        dout.writeUTF(str2);
        dout.flush();

    }
客户端代码

public static void main(String[] args) throws Exception { 
    Socket s=new Socket("192.168.0.110",1234);
    DataInputStream din=new DataInputStream(s.getInputStream());
    DataOutputStream dout=new DataOutputStream(s.getOutputStream());
    InputStreamReader is=new InputStreamReader(System.in);
    BufferedReader br=new BufferedReader(is);

    String str="",str2="";
    while(true)
    {
        str=br.readLine();
        dout.writeUTF(str);
        dout.flush();
        if((str2=din.readUTF())!=null)
        {
            System.out.println(str2);
        }
    }

DataInputStream.readUTF和BufferedReader.readLine正在阻止IO调用。这意味着他们将等待数据可用或流结束。你的问题没有意义。您的标题表示您不想从服务器读取,但您的代码从服务器读取。下定决心吧。NB要用readUTF读取的数据必须用writeUTF写入。问题是,当我从客户端向服务器发送第二条消息而不从服务器发送任何消息时,服务器端正在等待用户br.readline的输入。因此,在用户向服务器发送输入消息之前,服务器上不会显示第二条消息。我找不到逻辑,所以请帮我理解逻辑