/// <summary> /// 监听Local服务端口 /// </summary> public void ListenLocalServerPort() { EndPoint endPoint = LocalServerTcp.Client.RemoteEndPoint; NetworkStream readStream = LocalServerTcp.GetStream(); byte[] buffer = new byte[1024]; int length = 0; while (readStream.CanRead) { length = 0; try { length = readStream.Read(buffer, 0, buffer.Length); } catch (Exception ex) { Logger.Info.WriteLine("[Port]->[LocalServer] 接收数据错误:\r\n{0}", ex); } if (length > 0) { Logger.Trace.WriteLine("[Port]->[LocalServer] 接收到数据,长度:{0}", length); TransferLocalServerDataToServer(buffer, length, LocalServerTcp); } else { Logger.Trace.WriteLine("[Port]->[LocalServer] 接收到数据,长度:{0},断开连接!", length); break; } } DoTcpException(TcpErrorType.LocalServer, string.Format("[LocalServer] 已断开Tcp:{0}", endPoint)); }
public void HandleLocalPackage(byte type, byte[] data) { switch (type) { case P2PSocketType.Local.Break.Code: { BreakLocalServerTcp(); } break; case P2PSocketType.Local.Error.Code: { BreakLocalServerTcp(); } break; case P2PSocketType.Local.Secure.Code: { if (IsEnableLocalServer && (m_localServerTcp == null || !m_localServerTcp.Connected)) { lock (m_lockLocalServerTcp) { if (m_localServerTcp == null || !m_localServerTcp.Connected) { try { m_localServerTcp = new TcpClient("127.0.0.1", ConfigServer.AppSettings.LocalServerPort); _taskFactory.StartNew(() => { ListenLocalServerPort(); }); } catch (Exception ex) { DoTcpException(TcpErrorType.LocalServer, string.Format("[LocalServer]->[LocalPort] 端口:{0}连接失败!", ConfigServer.AppSettings.LocalServerPort)); } } } } } break; case P2PSocketType.Local.ServerName.Code: { } break; case P2PSocketType.Local.Transfer.Code: { try { LocalServerTcp.WriteAsync(data); } catch (Exception ex) { DoTcpException(TcpErrorType.LocalServer, string.Format("[LocalServer]->[Port] 数据转发错误,长度:{0}\r\n{1}", data.Length, ex)); } } break; } }