gpt4 book ai didi

C#tcpclient程序写入流但客户端未接收数据

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:06 26 4
gpt4 key购买 nike

我编写了一个TCPClient 程序在我的PC 上运行。它首先启动一个 TCP 监听器以监听特定端口,然后在多个线程上从/向多个 TCP 客户端读取/写入。
我可以从客户端读取数据,但每当我尝试向其发送数据时,程序都会显示它已发送数据,但客户端没有收到任何信息。

代码如下:

            TcpClient client = listener.AcceptTcpClient();
var childSocketThread = new Thread(() =>
{
if (client.Connected)
{
using (NetworkStream stream = client.GetStream())
{
Console.WriteLine("connected");
byte[] data = new byte[1000];
try
{
if (stream.CanRead)
{
stream.Read(data, 0, 1000);
string dataStr = Encoding.ASCII.GetString(data);
string dataa = dataStr.TrimEnd('\0');
//Console.WriteLine(dataa);
if (dataa.Length > 10)
{
deviceid = ParseRequest(dataa);

byte[] sendnow = Encoding.ASCII.GetBytes(reply[deviceid]);

Array.Clear(data, 0, 1000);
Console.WriteLine("Recieved data: " + dataa);
Console.WriteLine("Sending data");
using (StreamWriter writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
writer.WriteLine(reply[deviceid]);
}
Console.WriteLine(reply[deviceid]);
Console.WriteLine("Sent");
}

Console.WriteLine();
}
}
catch (Exception es)
{
Console.WriteLine(es);
}
}
}

});
childSocketThread.Start();

我使用的服务器设备是PLC。另外,我已经尝试过的事情:
1)直接使用Socket.Send方法发送。
2)直接使用NetworkStream方法发送。
3) 接受 TCP 连接作为套接字。 (Socket 设备 = listener.AcceptSocket)。

这些方法似乎都没有发送到设备,即使程序告诉我发送数据没有问题,因为它在尝试发送数据后显示“已发送”。我从此链接下载了另一个程序 http://www.codeproject.com/Articles/488668/Csharp-TCP-Server .他们提供的测试应用程序能够在与我在同一台 PC 上运行的程序相同的端口上发送和接收数据。

我无法就如何诊断以及更重要的是如何解决这个问题获得任何指导。有什么想法吗?

2015-08-10 11:18 更新:
该程序的输出如下: enter image description here

2015-08-10 11:32 更新:
系统日志控制台的输出: enter image description here

2015-08-10 中午 12:07 更新:
Wireshark 的输出:
enter image description here

最佳答案

我们需要您发布双方代码。不过,这里有一些代码可以正常工作,您可以使用它来查看您是否做错了什么。

http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C

关于C#tcpclient程序写入流但客户端未接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com