我想建立连接确认
我现在拥有的是
internal bool connect(remoteIP)
{
if ( network.startping(RemoteIP))
{
peer1.write("Hello!") ---> waits for "connected" until time out
if (Isconnected) return true
}
else
{
try again after few sec with finite number of repeats
}
return false
}
1)我该怎么做才能等待
我看到Task wait = new task.factory(()=> doDwaiting())
的方法
我觉得可以工作,但我在这里错过了一些逻辑
2)我怎样才能回报
我想我可以用int Counter
和goto
来做,但它看起来像'#34;好"方式去
我该怎么办?
答案 0 :(得分:1)
我使用了TcpClient类的BeginConnect来验证连接是否有效。如果连接失败,将使用System.Timer对象重新连接。连接方法的示例如下:
public void Connect(IPAddress ipAddress, int port, double reconnectInterval)
{
_reconnectTimer = new Timer { Interval = _reconnectInterval, Enabled = false, AutoReset = false };
_reconnectTimer.Elapsed += ReconnectTimer_Elapsed;
_tcpClient = new TcpClient();
try
{
_tcpClient.BeginConnect(ipAddress, port, ConnectionRequestCallback, null);
}
catch (Exception exception)
{
LostConnection(exception.Message);
}
}
当存在任何类型的连接失败时,将调用LostConnection方法。 LostConenction方法的职责是启动计时器。
_reconnectTimer.Start();
最后,计时器的回调调用上面显示的相同代码,尝试与远程主机建立新连接。
Connect(_endPoint.Address, _endPoint.Port, _reconnectTimer.Interval);
}