internal void AcceptNewHosts() { new Task(CheckForNewHostsSignal, TaskCreationOptions.LongRunning).Start(); new Task(CheckForMessages, TaskCreationOptions.LongRunning).Start(); while (IsCheckingForNewHosts) { try { var clientSocket = TcpSocket.Accept(); clientSocket.Blocking = false; var client = new Client { ClientSocket = clientSocket, Ip = ((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString() }; lock (ConnectionLock) { Connections.Add(client); } new Task(() => SendCacheList(client.Ip)).Start(); } catch (Exception) { // ignored } } }
private static void TcpConnect(string iP) { if (iP == IpAddress) { return; } var destinationIp = IPAddress.Parse(iP); var endPoint = new IPEndPoint(destinationIp, TcpPortNumber); var client = new Client { ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp), Ip = iP }; try { client.ClientSocket.Connect(endPoint); client.ClientSocket.Blocking = false; lock (ConnectionLock) { Connections.Add(client); } } catch (Exception ex) { Console.WriteLine(ex); } }