C#和Java套接字之间的通信中断?

C#和Java套接字之间的通信中断?,java,c#,sockets,networking,Java,C#,Sockets,Networking,我使用套接字在C#和Java之间进行通信。然而,每当我试图阅读时,我的C#流总是冻结。我想知道是否有人能帮我 Java代码- public void Send(String message) throws Exception { sock = new Socket("127.0.0.1", 2913); PrintStream PS = new PrintStream(sock.getOutputStream()); PS.println(message); } C#代

我使用套接字在C#和Java之间进行通信。然而,每当我试图阅读时,我的C#流总是冻结。我想知道是否有人能帮我

Java代码-

public void Send(String message) throws Exception {
    sock = new Socket("127.0.0.1", 2913);
    PrintStream PS = new PrintStream(sock.getOutputStream());
    PS.println(message);
}
C#代码-

我已经设法确保客户端正在连接,并且所有的C#代码都在执行,直到调用为止

stream.Read();
我想知道是否有人知道它为什么停在流中;。我的java是否试图在C#有机会听到消息之前发送消息?如果是这样,我将如何解决这个问题。我试过使用

while(!sock.isConnected()) Thread.sleep(1);

在我的Java中,但它没有帮助

我最后用这个函数来修复它

private static void Listen(){
    serverSocket.Start ();

    while (true) {
        TcpClient Client = serverSocket.AcceptTcpClient ();
        StreamReader sr = new StreamReader(Client.GetStream ());
        string dataFromClient = sr.ReadLine();
        //Output Data From Client 
        Client.Close();
    }
}

我想用流阅读器而不是自己尝试读取字节解决了这个问题

为什么要在读取操作中使用Client.ReceiveBufferSize?只需使用本例中的read.Length@PhilipStuyck就可以用下面的答案解决这个问题,但非常感谢您的输入。我不太熟悉使用套接字进行联网。我过去也曾使用过某种API。它应该不会有什么不同,看看msdn中的示例,它没有使用readline。@PhilipStuyck认为问题可能是您之前所说的。我在回读字节时使用了错误的长度。但是现在既然StreamReader为我做了,我就不用担心了。
private static void Listen(){
    serverSocket.Start ();

    while (true) {
        TcpClient Client = serverSocket.AcceptTcpClient ();
        StreamReader sr = new StreamReader(Client.GetStream ());
        string dataFromClient = sr.ReadLine();
        //Output Data From Client 
        Client.Close();
    }
}