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());
        }
Example #2
0
        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);
        }