static Socket msocket = null; //socket长连接
//自动重连服务器
public void ConnectToServer()
{
msocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
msocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
DateTime dtNow = System.DateTime.Now.AddSeconds(-5);
while (true)
{
if (System.DateTime.Now.Subtract(dtNow).TotalSeconds == 5)
{
if (!msocket.Connected)
{
Console.WriteLine("try to connect " + ip + ":" + port);
try
{
msocket.Connect(ip, port);
Console.WriteLine("connected!");
}
catch (Exception ex)
{
msocket.Shutdown(SocketShutdown.Both);
msocket.Close();
}
}
dtNow = System.DateTime.Now;
}
Thread.Sleep(1);
}
}
更简单的做法:
while(true)
{
xxxxxx
Thread.Sleep(5000);
}
也是每个5秒钟执行一次