【发布时间】:2011-02-03 05:14:30
【问题描述】:
我有一个非常奇怪的错误,我对此知之甚少,所以请多多包涵。
我有一个插座,连接到一个硬件。我同步发送,但异步接收。
我通过以下代码发送数据:
_dicSockets[lclIPEndPoint].Send(lclBytesSent, lclBytesSent.Length, SocketFlags.None);
并通过以下代码接收:
protected virtual void receiveCallback(IAsyncResult ar)
{
PFDoReceiveDataArgs receiveData = (PFDoReceiveDataArgs)ar.AsyncState;
Socket lclSocket = receiveData.MySocket;
etc...
当硬件在 10 秒内快速响应时,此方案可以正常工作。然而,当硬件需要更长的时间(大约 5 分钟)来响应时,就会出现疯狂的问题。在此期间,有一个线程处于while循环中,检查命令是否收到响应。
我知道硬件在这段时间内可以正常工作。我发送命令,5 分钟后,响应到达。 5 次中有 4 次没有问题,一切正常。同样的命令,同样的硬件,同样的一切......
五分之一的情况下,系统范围的网络崩溃导致我的互联网连接丢失!
由于我不知道问题可能是什么,我将等待您的一些想法并根据需要粘贴更多代码。
【问题讨论】:
-
您正在与之交谈的硬件是什么?
-
“系统范围”是指网络上的所有计算机都失去连接,还是只有一台运行代码的计算机?
-
只是运行代码的计算机。
-
硬件是某种电子过滤器。它有一个到外部世界的 tcp/ip 连接,具有分配的 IP 和端口
-
那么,您的互联网流量是否必须通过这个“电子过滤器”?
标签: c# visual-studio-2010 sockets .net-4.0 asynchronous