Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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
客户。将数据从C#客户端发送到Java服务器_C#_Tcpclient - Fatal编程技术网

客户。将数据从C#客户端发送到Java服务器

客户。将数据从C#客户端发送到Java服务器,c#,tcpclient,C#,Tcpclient,[已解决] 我有类似的问题的帖子,已经按照所有的答案,但得到了空字符串作为回应。 数据。 这是我的密码: try { string ENDOFLINE = "\r\n"; TcpClient client = new TcpClient(txtIP.Text, Int32.Parse(txtPort.Text)); NetworkStream stream = client.GetStream(); byte[] data = Encoding.ASCII.GetByt

[已解决]

我有类似的问题的帖子,已经按照所有的答案,但得到了空字符串作为回应。 数据。
这是我的密码:

try
{
   string ENDOFLINE = "\r\n";
   TcpClient client = new TcpClient(txtIP.Text, Int32.Parse(txtPort.Text));
   NetworkStream stream = client.GetStream();

   byte[] data = Encoding.ASCII.GetBytes(txtMessage.Text + ENDOFLINE);
   stream.Write(data, 0, data.Length);

   String responseData = String.Empty;
   Int32 bytes = stream.Read(data, 0, data.Length);
   responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
   Console.WriteLine("Received: {0}", responseData);
   stream.Close();
   client.Close();
}
catch(Exception ex)
{
   Console.WriteLine(ex.message);
}
解决方案:


在发送消息之后和接收响应之前立即断开连接。我遵循了这一点

您的代码运行良好,但只有在服务器端合作的情况下

我通过使用简单的java服务器实现和稍加修改的运行实现对其进行了测试:

public void run()
{
同时(正在运行)
{
尝试
{
clientSocket=serverSocket.accept();
System.out.println(“从“+clientSocket.getInetAddress().getHostAddress()+”:“+clientSocket.getPort()连接的客户端”);
recv=new BufferedReader(新的InputStreamReader(clientSocket.getInputStream());
System.out.println(“接收到的数据:+recv.readLine());
//一定要把东西寄回来。。。
OutputStreamWriter wr=新的OutputStreamWriter(clientSocket.getOutputStream());
wr.write(“FuBar!\r\n”);
//和同花顺!
wr.flush();
clientSocket.close();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
}
}
没有在OutputStreamWriter上调用
flush
,我得到了与您相同的结果:数据成功发送,但收到了一个空响应


在这些情况下,在调试器中运行两端确实有帮助。

请始终在问题本身中发布代码,而不是通过外部链接,这样,如果链接消失,问题不会变得毫无用处。@PeterB,谢谢您的建议,我编辑了这篇文章:)你不能将字节数组从C#发送到Java和VV,因为Java使用sbyte而不是字节。。。您应该更改byte[]data=Encoding.ASCII.GetBytes(txtMessage.Text+ENDOFLINE)@Alrehamy好的,让我试试你的解决方案。@Alrehamy,我无法让它工作,你有一个样本或者一篇我可以阅读的文章吗?有趣的是,我将检查开发服务器端的人,希望这能解决我的问题。一旦确认,我会接受你的解决方案。谢谢你的帮助。嗨,谢谢你的帮助,我终于找到了正确的解决方案:)