C# TCPClient-一段时间后停止接收数据

C# TCPClient-一段时间后停止接收数据,c#,tcp,C#,Tcp,我已经编写了一个代码,在TCP模式下监听特定端口上的数据。 现在这里的问题是,下面的代码从远程接收到一些数据,但过了一段时间,它什么也没有接收到 我已经检查了wireshark,数据正在那边 我已经检查了TCPView,端口(存在相同端口的2-3个条目)与应用程序一起打开,但很少有端口状态保持为“已建立”,一个端口显示为“正在侦听” 如果我正在检查wireshark的missign数据详细信息,那么我发现远程IP端口对在TCPView中声明为“已建立”,但它无法在日志文件中写入任何内容 我的问题

我已经编写了一个代码,在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链接可能会帮助您


此外,我建议您仅在插座因超时以外的其他原因而中断时关闭插座。如果发生超时,请继续阅读。

不要相信日志代码是可靠的。使用调试器。不要相信日志代码是可靠的。使用调试器。