Java TCP客户端不接收从C#服务器发送的消息

问题描述:

我正在用c#编写一个tcp服务器,并在java中对应的客户端。我正在测试本地主机上的连接,并且客户端能够连接到服务器。但是,当我发送消息时,客户端永远不会收到它们。使用调试器我已经验证了stream.Write(...)被执行。任何想法可能是什么问题?Java TCP客户端不接收从C#服务器发送的消息

这是C#服务器:

 TcpClient client = (TcpClient)cl; 
     NetworkStream stream = client.GetStream(); 

     byte[] msg = new byte[512]; 
     int bytesRead; 

     while (running) 
     { 
      while (messages.getCount() > 0) 
      { 
       String msg = messages.Take(); 

       if (cmd != null) 
       { 
        byte[] bytes = Encoding.UTF8.GetBytes(msg.ToCharArray()); 

        try 
        { 
         stream.Write(bytes, 0, bytes.Length); 
         stream.Flush(); 
        } 
        catch (Exception e) 
        { 

        } 
       } 
      } 

      Thread.Sleep(1000); 
     } 

和Java客户端:

public void run() 
{ 
    try 
    { 
     socket = new Socket(address, port); 
     in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     out = new PrintWriter(socket.getOutputStream()); 
     running = true; 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
     running = false; 
    } 

    String data; 
    while(running) 
    { 
     try 
     { 
      data = in.readLine(); 

      if(data != null) 
      { 
       processData(data); 
      } 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 

      running = false; 
      break; 
     } 
    } 

    try 
    { 
     socket.close(); 
     socket = null; 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

    running = false; 
} 

您使用BufferedReader.readLine()。您的消息字符串是由CR,LF还是CR/LF终止的?

readLine阻塞,直到读取行终止字符。