Наследование: Avalon.Network.Packets.Packet
Пример #1
0
        public bool Listen()
        {
            try
            {
                // initialize packet factory
                PacketHandler.Initialize();

                m_MasterSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint remoteEP = new IPEndPoint(Program.AvalonCfg.Master.IPAddress, Program.AvalonCfg.Master.Port);
                m_MasterSock.Connect(remoteEP);

                SMSG_CONNECT_MASTER spkt = new SMSG_CONNECT_MASTER(Program.AvalonCfg.Server.Servername, Program.AvalonCfg.Server.ServerIP, (ushort)Program.AvalonCfg.Server.ListenPort);
                m_MasterSock.Send(spkt.Stream);

                SocketServer clientSock = new SocketServer(m_MasterSock);
                SocketClient clientState = new SocketClient(clientSock);

                clientSock.Socket.BeginReceive(clientSock.m_bRecvBuffer, 0, 0x1000, SocketFlags.None, clientSock.OnDataReceive, clientState);

                // listen on port 15554
                m_MainSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                m_MainSock.Bind(new IPEndPoint(IPAddress.Any, m_ListenPort));
                m_MainSock.Listen(0x20);

                // when a connection is established invoke OnNewConnection()
                m_MainSock.BeginAccept(new AsyncCallback(OnNewConnection), m_MainSock);

                Logger.Log(Logger.LogLevel.Info, "Server Status", "Listening on port " + Program.AvalonCfg.Server.ListenPort);
                return true;
            }
            catch (SocketException se)
            {
                Logger.Log(Logger.LogLevel.Error, "SocketServer", "Listen: {0}", se.Message);
            }

            return false;
        }