Пример #1
0
        /// <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));
        }
Пример #2
0
        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;
            }
        }