C#和Java套接字之间的通信中断?
我使用套接字在C#和Java之间进行通信。然而,每当我试图阅读时,我的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#代
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();
}
}