/// <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} 监听失败."); } }
/// <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); } }); }
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); }); }); }
/// <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}监听失败."); } } }