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 而不是尝试读取字节,我自己修复了它。
我正在使用套接字在 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 而不是尝试读取字节,我自己修复了它。