public bool StartListening(SocketConnectionAccepted callback) { var any = IPAddress.Any; string ipString; if (Program.LaunchParameters.TryGetValue("-ip", out ipString) && !IPAddress.TryParse(ipString, out any)) { any = IPAddress.Any; } _server = new SocketServer(any, Netplay.ListenPort); _server.SetConnectionAcceptedCallback((socket) => { socket.NoDelay = true; var imp = new AsyncSocket(socket); Console.WriteLine(imp.GetRemoteAddress() + " is connecting..."); callback(imp); }); return(_server.Start()); }
public bool Listen() { if (_server == null) { var any = IPAddress.Any; string ipString; if (Terraria.Program.LaunchParameters.TryGetValue("-ip", out ipString) && !IPAddress.TryParse(ipString, out any)) { any = IPAddress.Any; } _server = new SocketServer(any, Netplay.ListenPort); _server.SetConnectionAcceptedCallback((socket) => { try { var imp = new AsyncSocket(this, socket); //Console.WriteLine(imp.GetRemoteAddress() + " is connecting..."); _callback(imp); var remoteClient = Netplay.Clients.SingleOrDefault(x => x != null && x.Socket == imp); if (remoteClient != null) { imp.SetRemoteClient(remoteClient); imp.StartReading(); } else { socket.Close(); } } catch (Exception ex) { Console.WriteLine(ex); } }); return(_server.Start()); } return(false); }