Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP客户端(java)没有';无法从TCP服务器(C#)接收消息_Java_C#_Sockets_Tcp_Network Programming - Fatal编程技术网

TCP客户端(java)没有';无法从TCP服务器(C#)接收消息

TCP客户端(java)没有';无法从TCP服务器(C#)接收消息,java,c#,sockets,tcp,network-programming,Java,C#,Sockets,Tcp,Network Programming,我有一个用C#编写的GUI TCP服务器,它监听4444端口,还有一个连接到4444端口的GUI java客户端。我可以将消息从客户端发送到服务器,服务器端文本字段设置为message,但当我将消息从服务器发送到客户端时,客户端文本字段中不会显示任何消息(控制台中也不会显示任何结果)。我需要帮助 --从服务器向客户端发送消息的代码------C# ----Java客户端代码----- public void run()引发IOException { 插座=新插座(“127.0.0.1”,4444

我有一个用C#编写的GUI TCP服务器,它监听4444端口,还有一个连接到4444端口的GUI java客户端。我可以将消息从客户端发送到服务器,服务器端文本字段设置为message,但当我将消息从服务器发送到客户端时,客户端文本字段中不会显示任何消息(控制台中也不会显示任何结果)。我需要帮助

--从服务器向客户端发送消息的代码------C#

----Java客户端代码-----

public void run()引发IOException
{
插座=新插座(“127.0.0.1”,4444);
BufferedReader in=新的BufferedReader(新的InputStreamReader(socket.getInputStream());
out=新的PrintWriter(socket.getOutputStream(),true);
字符串输入线;
而((inputLine=in.readLine())!=null)
{
System.out.println(“客户端<”+输入行);
rxArea.setText(输入行);
}
out.close();
in.close();
socket.close();
}
注意:客户端和服务器之间的通信工作正常,只是服务器和客户端之间存在问题

更新:-
我关闭了网络流,它工作了!!!但由于我在服务器中运行另一个子线程来侦听传入流,因此当我关闭网络流时,它会抛出异常并停止执行。

在服务器代码中,您似乎没有关闭网络流。然后清除缓冲区,这可能发生在流完成发送数据之前。下面是一个创建TCP服务器的示例,它是C#(dotnetcore)。

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

是的,谢谢!它工作了,但我有一个正在运行的子线程来侦听传入的消息。因此,当我关闭网络流时,它基本上会关闭侦听线程,抛出“System.IO.IOException:”无法从传输连接读取数据:阻塞操作被对WSACancelBlockingCall的调用中断。。您从文本框中获取文本,然后将换行符附加到文本框中,然后将您在没有换行符的情况下读取的文本发送到客户端,客户端正在使用readLine()读取。是!但如果我从服务器发送消息,客户端就不会接收到消息。
 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



    }
 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();
}