/// <summary>
 ///     监听消息端口
 /// </summary>
 private void ListenMessagePort()
 {
     try
     {
         TcpListener listener = new TcpListener(IPAddress.Any, Global.LocalPort);
         listener.Start();
         ListenerList.Add(listener);
         Global.TaskFactory.StartNew(() =>
         {
             try
             {
                 while (true)
                 {
                     Socket socket          = listener.AcceptSocket();
                     P2PTcpClient tcpClient = new P2PTcpClient(socket);
                     //接收数据
                     Global.TaskFactory.StartNew(() =>
                     {
                         Global_Func.ListenTcp <ReceivePacket>(tcpClient);
                     });
                 }
             }
             catch (Exception ex)
             {
                 LogUtils.Debug(ex.Message);
             }
         });
     }
     catch
     {
         LogUtils.Error($"【失败】服务端口:{Global.LocalPort} 监听失败.");
     }
 }
Beispiel #2
0
        /// <summary>
        ///     监听消息端口
        /// </summary>
        private void ListenMessagePort()
        {
            TcpListener listener = new TcpListener(IPAddress.Any, ConfigCenter.Instance.LocalPort);

            try
            {
                listener.Start();
                LogUtils.Info($"【成功】启动服务,端口:{ConfigCenter.Instance.LocalPort}");
            }
            catch
            {
                LogUtils.Error($"【失败】服务端口:{ConfigCenter.Instance.LocalPort} 监听失败.");
                return;
            }
            ListenerList.Add(listener);
            AppCenter.Instance.StartNewTask(() =>
            {
                try
                {
                    while (true)
                    {
                        Socket socket          = listener.AcceptSocket();
                        P2PTcpClient tcpClient = new P2PTcpClient(socket);
                        LogUtils.Info($"端口{ ConfigCenter.Instance.LocalPort}新连入Tcp:{tcpClient.Client.RemoteEndPoint.ToString()}");
                        //接收数据
                        AppCenter.Instance.StartNewTask(() => Global_Func.ListenTcp <ReceivePacket>(tcpClient));
                    }
                }
                catch (Exception ex)
                {
                    LogUtils.Debug(ex.Message);
                }
            });
        }
Beispiel #3
0
        public void AcceptSocket_Client(IAsyncResult ar)
        {
            ListenSt    st       = (ListenSt)ar.AsyncState;
            TcpListener listener = st.listener;
            Socket      socket   = null;

            EasyOp.Do(() =>
            {
                socket = listener.EndAcceptSocket(ar);
            }, () =>
            {
                EasyOp.Do(() =>
                {
                    listener.BeginAcceptSocket(AcceptSocket_Client, st);
                }, exx =>
                {
                    LogUtils.Error($"端口监听失败:{Environment.NewLine}{exx}");
                    EasyOp.Do(() => listener.Stop());
                    ListenerList.Remove(listener);
                });
                P2PTcpClient tcpClient = null;
                EasyOp.Do(() =>
                {
                    tcpClient = new P2PTcpClient(socket);
                }, () =>
                {
                    LogUtils.Trace($"端口{ appCenter.Config.LocalPort}新连入Tcp:{tcpClient.Client.RemoteEndPoint}");
                    //接收数据
                    EasyOp.Do(() =>
                    {
                        Global_Func.ListenTcp <ReceivePacket>(tcpClient);
                    }, ex =>
                    {
                        LogUtils.Debug($"准备接收Tcp数据出错:{Environment.NewLine}{ex}");
                        EasyOp.Do(() => tcpClient?.SafeClose());
                    });
                }, ex =>
                {
                    LogUtils.Debug($"处理新接入Tcp时出错:{Environment.NewLine}{ex}");
                    EasyOp.Do(() => tcpClient?.SafeClose());
                });
            }, ex =>
            {
                LogUtils.Debug($"获取新接入的Tcp连接失败");
                EasyOp.Do(() =>
                {
                    listener.BeginAcceptSocket(AcceptSocket_Client, st);
                }, exx =>
                {
                    LogUtils.Error($"端口监听失败:{Environment.NewLine}{exx}");
                    EasyOp.Do(() => listener.Stop());
                    ListenerList.Remove(listener);
                });
            });
        }
Beispiel #4
0
        /// <summary>
        ///     监听消息端口
        /// </summary>
        private void ListenMessagePort()
        {
            //服务端口限制在1000以上
            if (Global.LocalPort > 1000)
            {
                try
                {
                    TcpListener listener = new TcpListener(IPAddress.Any, Global.LocalPort);
                    listener.Start();
                    ConsoleUtils.Write($"开始监听{Global.LocalPort}端口.");

                    Global.TaskFactory.StartNew(() =>
                    {
                        try
                        {
                            while (true)
                            {
                                Socket socket          = listener.AcceptSocket();
                                P2PTcpClient tcpClient = new P2PTcpClient(socket);
                                //接收数据
                                Global.TaskFactory.StartNew(() =>
                                {
                                    Global_Func.ListenTcp <RecievePacket>(tcpClient);
                                });
                                var endPoint = socket.RemoteEndPoint as IPEndPoint;
                                ConsoleUtils.Write($"已连接客户端{endPoint.Address.ToString()}:{endPoint.Port}");
                            }
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine(ex.Message);
                        }
                    });
                }
                catch
                {
                    ConsoleUtils.Write($"端口{Global.LocalPort}监听失败.");
                }
            }
        }