套接字服务器一直在监听

要求是服务器套接字应该始终接受客户端套接字连接(Windows服务应用程序)。 下面是几个小时可以正常工作的代码,但是在一段时间之后接受根本不起作用。 为了始终保持接受,我还有每隔10分钟连接服务器的线程。 通过这种方式我知道服务器套接字已经停止一段时间(几个小时)

public void StartReceiveNotification() { if (!isStarted) { try { byte[] bytes = new Byte[1024]; var ips = Dns.GetHostAddresses(Dns.GetHostName()); var myAddress = ips.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork); assigningIp = myAddress; server = new TcpListener(myAddress, 11001); server.Start(); AcceptSockets(); isStarted = true; } catch (Exception ex) { logger.Error(ex); } } } private void AcceptSockets() { try { while (true) { var acceptedSocket = server.AcceptSocket(); var state = new StateObject { BufferSize = 6000, Socket = acceptedSocket }; acceptedSocket.BeginReceive(state.Buffer, 0, state.BufferSize, 0, this.ReadCallback, state); acceptedSockets.Add(acceptedSocket); } } catch (Exception ex) { logger.Error(ex);// no exception but stops accepting socket } } internal ElapsedEventHandler SendKeepLiveCommand()// triggers every 10 min { try { if (assigningIp != null) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(assigningIp, 11001); socket.Send(ASCIIEncoding.ASCII.GetBytes("keepAlive")); socket.Disconnect(false); socket.Dispose(); } } catch (Exception ex) { logger.Error(ex);// get exception after several hours } return null; } 

问题是服务器有vpn连接,它正在使用该IP地址。 当vpn连接丢失时服务器停止监听。