背景:我的应用程序可以选择自动检查网络上的设备是否连接到网络。TCP客户端和套接字问题
如果设备未连接,则表示为蓝色正方形,并且表示连接的绿色正方形。我已经对这个程序进行了比较彻底的测试,并且有几组不同的数据需要查看;
如果设备开始断开连接,我可以连接,然后断开,从蓝色,绿色,蓝色,但在此之后停止运作。
如果设备开始连接,我可以断开连接,但不能再次连接,所以这会从绿色变为蓝色,但随后停止运行。
下面是一些代码片段,显示我如何连接到这些(这不是异步的,因为一些设备没有回调(?));
TcpClient _tc = new TcpClient();
if (!_tc.Client.Connected)
{
try
{
_tc.Client.Connect(device.deviceIPAddress, device.devicePort);
_tc.Client.ReceiveTimeout = 10;
}
catch
{
if (deviceDownNotified == false)
{
//do stuff to notify me
}
}
}
if (_tc.Client.Connected)
{
tcpSet = true;
try
{
result = this.SendCommandResult(bData, 72);
if (result[0] == 0xF0 && result[1] == 0xF0 && result[2] == 0x00 && result[3] == 0x02 && result[68] == 0xF0 && result[69] == 0xF0)
{
CheckChanges(result, device, exit);
deviceDownNotified = false;
}
}
catch
{
}
}
编辑:另外我只是在想,我真的没有必要手动断开连接。如果一个客户端没有连接,那么连接,如果是的话,然后做东西。我有点困惑,它在哪个状态之间切换一次,然后停止工作。
我想我的问题可能是由于我断开插座/客户端的方式,如果设备断开连接。有人有主意吗?如果您需要更多信息,只需询问。
编辑2:我有线了一个重新连接按钮,我手动点击时,它应该重新连接,我收到以下错误异常:
“一旦插座已经断开,只能重新再异步的,只有到一个不同的终点,必须在一个线程上调用BeginConnect,直到操作完成才会退出。“