我正在使用套接字在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中,但它没有帮助。
答案 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();
}
}
我想使用流式阅读器而不是尝试读取自己修复的字节。