C# TCPClient-一段时间后停止接收数据
我已经编写了一个代码,在TCP模式下监听特定端口上的数据。 现在这里的问题是,下面的代码从远程接收到一些数据,但过了一段时间,它什么也没有接收到 我已经检查了wireshark,数据正在那边 我已经检查了TCPView,端口(存在相同端口的2-3个条目)与应用程序一起打开,但很少有端口状态保持为“已建立”,一个端口显示为“正在侦听” 如果我正在检查wireshark的missign数据详细信息,那么我发现远程IP端口对在TCPView中声明为“已建立”,但它无法在日志文件中写入任何内容 我的问题是为什么我的申请中没有收到任何数据。代码中有什么错误吗?我已经尝试了谷歌能提供的每一个选项,但是没有运气C# TCPClient-一段时间后停止接收数据,c#,tcp,C#,Tcp,我已经编写了一个代码,在TCP模式下监听特定端口上的数据。 现在这里的问题是,下面的代码从远程接收到一些数据,但过了一段时间,它什么也没有接收到 我已经检查了wireshark,数据正在那边 我已经检查了TCPView,端口(存在相同端口的2-3个条目)与应用程序一起打开,但很少有端口状态保持为“已建立”,一个端口显示为“正在侦听” 如果我正在检查wireshark的missign数据详细信息,那么我发现远程IP端口对在TCPView中声明为“已建立”,但它无法在日志文件中写入任何内容 我的问题
TcpListener tcpListenerDeviceResponse = new TcpListener(new IPEndPoint(IPAddress.Parse(localIP), 6005));
tcpListenerDeviceResponse.Start();
while (true)
{
using (TcpClient client = tcpListenerDeviceResponse.AcceptTcpClient())
{
// Get a stream object for reading and writing
using (NetworkStream stream = client.GetStream())
{
Socket skSource = client.Client;
int i;
var data2 = new byte[client.ReceiveBufferSize];
// Loop to receive all the data sent by the client.
while ((i = stream.Read(data2, 0, data2.Length)) != 0)
{
// Translate data bytes to a ASCII string.
string strResponse = System.Text.Encoding.ASCII.GetString(data2, 0, i);
// Insert the data in log text file
// process data
}
stream.Close();
}
// Shutdown and end connection
client.Close();
}
}
tcpListenerDeviceResponse.Stop();
一个原因可能是超时 假设发送套接字发送数据的时间超过接收套接字的超时时间,则会导致超时错误,并会在循环时中断
,然后关闭套接字
MSDN链接可能会帮助您
此外,我建议您仅在插座因超时以外的其他原因而中断时关闭插座。如果发生超时,请继续阅读。一个原因可能是超时
假设发送套接字发送数据的时间超过接收套接字的超时时间,则会导致超时错误,并会在
循环时中断,然后关闭套接字
MSDN链接可能会帮助您
此外,我建议您仅在插座因超时以外的其他原因而中断时关闭插座。如果发生超时,请继续阅读。不要相信日志代码是可靠的。使用调试器。不要相信日志代码是可靠的。使用调试器。