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

时间:2015-03-14 08:46:28

标签: 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#代码 -

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中,但它没有帮助。

1 个答案:

答案 0 :(得分:0)

我最终通过将它用于我的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();
    }
}

我想使用流式阅读器而不是尝试读取自己修复的字节。