C# 和 Java 套接字之间的通信停止了吗?

Communication between C# and Java Sockets halting?

我正在使用套接字在 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# 代码 -

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

    while (true) {
        TcpClient Client = serverSocket.AcceptTcpClient ();
        NetworkStream stream = Client.GetStream ();
        byte[] read = new byte[10025];
        stream.Read (read, 0, (int)Client.ReceiveBufferSize);
        Client.GetStream().Flush();
        string dataFromClient = System.Text.Encoding.ASCII.GetString (read);

        //Output data from client

        Client.Close();
    }
}

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

stream.Read();

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

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

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

我最终通过将其用于我的 C# 函数来修复它。

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();
    }
}

我猜是使用流 reader 而不是尝试读取字节,我自己修复了它。