Java套接字,从服务器输出获取输入时客户端挂起

Java套接字,从服务器输出获取输入时客户端挂起,java,sockets,Java,Sockets,我在客户机中有一个套接字,它连接到服务器以发送和接收字符串,使用writeUTF()和readUTF()读取和写入套接字,当我将一个字符串从客户机写入套接字并在服务器上读取它们时,它就工作了。但当服务器从套接字接收字符串并将“标志”写入套接字以在客户端上读取它们时,客户端挂起在读取行。这是我的密码 服务器 public void run(){ DataInputStream input = null; try{ output = new DataOutputStr

我在客户机中有一个套接字,它连接到服务器以发送和接收字符串,使用writeUTF()和readUTF()读取和写入套接字,当我将一个字符串从客户机写入套接字并在服务器上读取它们时,它就工作了。但当服务器从套接字接收字符串并将“标志”写入套接字以在客户端上读取它们时,客户端挂起在读取行。这是我的密码

服务器

public void run(){
    DataInputStream input = null;
    try{
        output = new DataOutputStream(socket.getOutputStream());
        input = new DataInputStream(socket.getInputStream());
        while((true)&&(this.active)){
            String receive = input.readUTF();               
            String[] str = receive.split("@");
            if (str[0].equals("get_list")){                    
                output.writeUTF("flag");                  
            }

        }
    }catch(IOException ex){
    }
客户

public void run(){
   DataOutputStream output = null;
    try{
        output = new DataOutputStream(socket.getOutputStream());
        DataInputStream input = new DataInputStream(socket.getInputStream());
        output.writeUTF("get_list@");          
        String receive = input.readUTF();   //Hang at this line
        System.out.println(receive);
    } catch (IOException ex) {
    }

在这之前可能需要
output.flush()
。在每次
output.flush()
之后立即将
output.flush()
添加到服务器和客户端。writeUTF()或任何其他写入输出(如果有的话)。您的意思是在output.writeUTF(“标志”)?。我尝试但不同时使用你的客户端和服务器。似乎存在不平衡的读/写问题。客户端等待信息,但服务器不打算发送此信息。常见问题解答,如何启动Netbeans IDE的多个实例:我的意思是在
output.writeUTF(“get_list”)之后启动这两个实例和之后
输出。writeUTF(“标志”)