博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Socket自动断线重连的代码

Posted on 2011-10-19 16:32  Honor  阅读(2499)  评论(0)    收藏  举报

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秒钟执行一次