等待返回消息超时

时间:2014-05-04 21:30:06

标签: c# client-server wait

我想建立连接确认

我现在拥有的是

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 Countergoto来做,但它看起来像'#34;好"方式去

我该怎么办?

1 个答案:

答案 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);
    }