TCP 客户端 (java) 未收到来自 TCP 服务器 (C#) 的消息
TCP client(java) didn't receive message from TCP server(C#)
我有一个用 C# 编写的 GUI TCP 服务器,它监听 4444 端口,还有一个 GUI java 客户端连接到 4444 端口。我可以从客户端向服务器发送消息,服务器端文本字段设置了消息,但是当我从服务器向客户端发送消息时,客户端的文本字段中没有显示任何消息(控制台也没有结果)。需要帮助。
--服务端向客户端发送消息的代码----- C#
private void button1_Click(object sender, EventArgs e)
{
String outmsg = textBox1.Text;
textBox1.Text = "";
byte[] bytes = Encoding.ASCII.GetBytes(outmsg);
String Msg = Encoding.ASCII.GetString(bytes);
richTextBox1.AppendText("\n\n" + Msg);
networkStreamData.Write(bytes, 0, bytes.Length); //NetworkStream
bytes = new byte[1024]; //For clearing the buffer
}
----Java 客户端代码-----
public void run () throws IOException
{
Socket socket = new Socket ("127.0.0.1", 4444);
BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream ()));
out = new PrintWriter (socket.getOutputStream (), true);
String inputLine;
while ((inputLine = in.readLine ()) != null)
{
System.out.println ("Client < " + inputLine);
rxArea.setText (inputLine);
}
out.close();
in.close();
socket.close();
}
注意:客户端和服务器之间的通信工作正常,只有服务器和客户端之间存在问题。
更新:-
我关闭了网络流,它起作用了!!!但是因为我在服务器中有另一个子线程 运行 来监听传入的流,所以当我关闭网络流时它会抛出异常并停止执行。
您似乎没有关闭服务器代码中的 NetworkStream。然后清除缓冲区,这可能发生在 Stream 完成发送数据之前。下面是创建 TCP 服务器的示例是 C# (dotnetcore)。
http://www.c-sharpcorner.com/article/building-a-tcp-server-in-net-core-on-ubuntu/
Readline() 需要 '\n' 作为消息 termination.As 已发送的消息没有终止 readline 一直在阅读并且消息未设置。
我有一个用 C# 编写的 GUI TCP 服务器,它监听 4444 端口,还有一个 GUI java 客户端连接到 4444 端口。我可以从客户端向服务器发送消息,服务器端文本字段设置了消息,但是当我从服务器向客户端发送消息时,客户端的文本字段中没有显示任何消息(控制台也没有结果)。需要帮助。
--服务端向客户端发送消息的代码----- C#
private void button1_Click(object sender, EventArgs e)
{
String outmsg = textBox1.Text;
textBox1.Text = "";
byte[] bytes = Encoding.ASCII.GetBytes(outmsg);
String Msg = Encoding.ASCII.GetString(bytes);
richTextBox1.AppendText("\n\n" + Msg);
networkStreamData.Write(bytes, 0, bytes.Length); //NetworkStream
bytes = new byte[1024]; //For clearing the buffer
}
----Java 客户端代码-----
public void run () throws IOException
{
Socket socket = new Socket ("127.0.0.1", 4444);
BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream ()));
out = new PrintWriter (socket.getOutputStream (), true);
String inputLine;
while ((inputLine = in.readLine ()) != null)
{
System.out.println ("Client < " + inputLine);
rxArea.setText (inputLine);
}
out.close();
in.close();
socket.close();
}
注意:客户端和服务器之间的通信工作正常,只有服务器和客户端之间存在问题。
更新:- 我关闭了网络流,它起作用了!!!但是因为我在服务器中有另一个子线程 运行 来监听传入的流,所以当我关闭网络流时它会抛出异常并停止执行。
您似乎没有关闭服务器代码中的 NetworkStream。然后清除缓冲区,这可能发生在 Stream 完成发送数据之前。下面是创建 TCP 服务器的示例是 C# (dotnetcore)。 http://www.c-sharpcorner.com/article/building-a-tcp-server-in-net-core-on-ubuntu/
Readline() 需要 '\n' 作为消息 termination.As 已发送的消息没有终止 readline 一直在阅读并且消息未设置。