【问题标题】:TCP client(java) didn't receive message from TCP server(C#)TCP 客户端(java)没有收到来自 TCP 服务器(C#)的消息
【发布时间】:2018-06-05 14:12:19
【问题描述】:

我有一个用 C# 编写的 GUI TCP 服务器,它侦听 4444 端口和一个连接到 4444 端口的 GUI Java 客户端。我可以从客户端向服务器发送消息,并且服务器端文本字段设置了消息,但是当我从服务器向客户端发送消息时,客户端的文本字段中没有显示任何消息(控制台中也没有结果)。需要帮助。

--从服务器发送消息到客户端的代码-----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();
}

注意:客户端和服务器之间的通信工作正常,只有服务器和客户端之间存在问题。

更新:- 我关闭了网络流,它起作用了!!!但是由于我在服务器中运行了另一个子线程来侦听传入流,所以当我关闭网络流时,它会引发异常并停止执行。

【问题讨论】:

  • Sooo .. 您从框中获取文本,然后将换行符附加到文本框,然后将您阅读的没有换行符的文本发送给客户端,客户端正在使用 readLine() 读取。 .........
  • 是的!但是如果我从服务器发送消息,客户端没有接收到。

标签: java c# sockets tcp network-programming


【解决方案1】:

Readline() 需要 '\n' 作为消息终止。因为在发送的消息中没有终止 readline 一直在读取并且消息没有设置。

【讨论】:

    【解决方案2】:

    您似乎没有在服务器代码中关闭 NetworkStream。然后清除缓冲区,这可能发生在 Stream 完成发送数据之前。下面是一个创建 TCP 服务器的例子是 C# (dotnetcore)。 http://www.c-sharpcorner.com/article/building-a-tcp-server-in-net-core-on-ubuntu/

    【讨论】:

    • 是的,谢谢!它有效,但我有一个正在运行的子线程来监听传入的消息。所以当我关闭网络流时,基本上它会关闭监听线程抛出'System.IO.IOException:'无法从传输连接读取数据:阻塞操作被对WSACancelBlockingCall的调用中断。''
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2014-08-26
    • 2017-09-02
    • 2019-10-01
    • 2019-02-26
    • 1970-01-01
    • 2015-12-17
    相关资源
    最近更新 更多