Esempio n. 1
0
        //开始监听和设置
        private void StartListening()
        {
            string strIP   = txtIP.Text.Trim();
            string strport = txtPort.Text.Trim();

            if (string.IsNullOrWhiteSpace(strIP))
            {
                MessageBox.Show("服务器地址不能为空");
                return;
            }
            if (string.IsNullOrWhiteSpace(strport))
            {
                MessageBox.Show("端口号不能为空");
                return;
            }
            int port = 0;

            if (int.TryParse(strport, out port))
            {
                if (port < 2000)
                {
                    MessageBox.Show("端口号取值范围为2000到65535");
                    return;
                }
                if (port > 65535)
                {
                    MessageBox.Show("端口号取值范围为2000到65535");
                    return;
                }
                if (IsUse(port))
                {
                    MessageBox.Show("当前端口号已被占用");
                    return;
                }
            }
            else
            {
                MessageBox.Show("端口号必须是整数");
                return;
            }
            //配置日志记录器
            //ILogger logger = new LiteLogger(LiteLogger.LogMode.ConsoleAndLogFile, "ServerLogFile_" + NetworkComms.NetworkIdentifier + ".txt");
            //NetworkComms.EnableLogging(logger);
            //不启用日志记录
            NetworkComms.DisableLogging();
            //如果某客户端离线,触发此方法
            NetworkComms.AppendGlobalConnectionCloseHandler(HandleConnectionClosed);


            #region 用户登录和聊天相关

            //客户端发来的聊天信息  转发之
            NetworkComms.AppendGlobalIncomingPacketHandler <MsgEntity>("ChatMessage", IncomingChatMessage);

            //客户端获取好友列表
            NetworkComms.AppendGlobalIncomingPacketHandler <string>("GetFriends", IncomingGetFriends);

            //获取所有在线用户列表

            NetworkComms.AppendGlobalIncomingPacketHandler <string>("GetOnlineUser", IncomingGetOnlineUser);

            //用户登录
            NetworkComms.AppendGlobalIncomingPacketHandler <IMUserInfo>("UserLogin", IncomingLoginHandler);
            //更改密码
            NetworkComms.AppendGlobalIncomingPacketHandler <UserPswEntity>("ChangePsw", IncomingChangePsw);

            //注册新用户
            //NetworkComms.AppendGlobalIncomingPacketHandler<RcUsers>("RegUser", IncomingRegisterUser);

            #endregion

            #region 用户和组相关
            //====================================================================================================
            ////获取所有用户组
            //NetworkComms.AppendGlobalIncomingPacketHandler<string>("GetGroup", IncomingGetGrooup);



            // 获取离线消息
            NetworkComms.AppendGlobalIncomingPacketHandler <UserIDContract>("GetMyOffLineMsg", IncomingMyOffLineMsg);

            //获取所有在线用户的P2P信息
            NetworkComms.AppendGlobalIncomingPacketHandler <string>("GetP2PInfo", IncomingP2PInfo);

            #endregion
            IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(strIP), port);
            TCPConnection.StartListening(thePoint, false);
            AddLineToLog("初始化完成,正在监听:");
            AddLineToLog("IP地址" + strIP + "--" + "端口" + port.ToString());
        }