示例#1
0
        /// <summary>
        /// 开始服务
        /// </summary>
        /// <param name="P2PFileServerPort">P2P服务传输服务端口(UDP)</param>
        /// <param name="ImageFileServerPort">图片文件传输服务端口(TCP)</param>
        /// <param name="MessageServerPort">消息服务端口(TCP)</param>
        /// <param name="P2PAVServerPort">音视频服务端口(UDP)</param>
        public void Start(int P2PFileServerPort, int P2PAVServerPort, int ImageFileServerPort, int MessageServerPort)
        {
            #region 初始化组织架构

            ///初始化数据库连接字符串
            IMLibrary.SqlData.DataAccess.ConnectionString = DBHelper.settings.SqlConStr;


            /// 初始化用户
            if (Users == null)
                Users = DBHelper.GetUserVcards();


            /// 获取组织机构版本和信息
            {
                orgVersion = DBHelper.ResetOrgVersion(); //重设组织架构版本相关信息
            }

            #region  初始化群
            if (Rooms == null)
            {
                Rooms = DBHelper.GetRooms();
                foreach (Room room in Rooms.Values)
                {
                    #region 将内存中的用户添加到内存中的群
                    string[] userids = room.UserIDs.Split(';');
                    foreach (string userID in userids)
                    {
                        UserVcard user = getUser(userID);
                        if (user != null)
                        {
                            if (room.Users == null) room.Users = new Dictionary<string, User>();
                            if (!room.Users.ContainsKey(userID))
                            {
                                if (room.CreateUserID == userID) user.CreatedRoomsCount++;//标记用户已创建群数
                                room.Users.Add(user.UserID, user);
                            }

                            if (user.Rooms == null) user.Rooms = new Dictionary<string, Room>();
                            if (!user.Rooms.ContainsKey(room.RoomID))
                                user.Rooms.Add(room.RoomID, room);
                        }
                    }

                    room.UserIDs = "";//重新生成群包含的Users
                    foreach (User u in GetUsers(room))
                        room.UserIDs += u.UserID + ";";

                    #endregion
                }
            }
            #endregion

            #endregion

            //启动消息服务
            if (msgServer == null)
            {
                msgServer = new MsgServer(MessageServerPort);
                msgServer.Login += new MsgServer.MsgServerEventHandler(msgServer_Login);
                msgServer.UserOffline += new MsgServer.MsgServerEventHandler(msgServer_UserOffline);
                msgServer.Message += new MsgServer.MsgServerEventHandler(msgServer_Message);
                msgServer.Presence += new MsgServer.MsgServerEventHandler(msgServer_Presence);
                msgServer.RequestChangeGroupVcard += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeGroupVcard);
                msgServer.RequestChangePassword += new MsgServer.MsgServerEventHandler(msgServer_RequestChangePassword);
                msgServer.RequestChangeRoom += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeRoom);
                msgServer.RequestChangeUserVcard += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeUserVcard);
                msgServer.RequestOrgGroups += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgGroups);
                msgServer.RequestOrgRooms += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgRooms);
                msgServer.RequestOrgUsers += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgUsers);
                msgServer.RequestUsersPresence += new MsgServer.MsgServerEventHandler(msgServer_RequestUsersPresence);
                msgServer.RouteDownLoadImageFile += new MsgServer.MsgServerEventHandler(msgServer_RouteDownLoadImageFile);
                msgServer.RouteP2PFileTransmit += new MsgServer.MsgServerEventHandler(msgServer_RouteP2PFileTransmit);
                msgServer.RouteAVMsg += new MsgServer.MsgServerEventHandler(msgServer_RouteAVMsg);
            }
            msgServer.Start();

            //启动P2P文件服务
            if (p2pFileServer == null) p2pFileServer = new P2PFileServer(P2PFileServerPort);
            p2pFileServer.Start();

            //启动图片文件服务
            if (imageFileServer == null) imageFileServer = new ImageFileServer(ImageFileServerPort);
            imageFileServer.Start();

            //启动音视频传输服务 
            if (p2pAVServer == null) p2pAVServer = new P2PAVServer(P2PAVServerPort);
            p2pAVServer.Start();
        }
示例#2
0
        /// <summary>
        /// 开始服务
        /// </summary>
        /// <param name="P2PFileServerPort">P2P服务传输服务端口(UDP)</param>
        /// <param name="ImageFileServerPort">图片文件传输服务端口(TCP)</param>
        /// <param name="MessageServerPort">消息服务端口(TCP)</param>
        /// <param name="P2PAVServerPort">音视频服务端口(UDP)</param>
        public void Start(int P2PFileServerPort, int P2PAVServerPort, int ImageFileServerPort, int MessageServerPort)
        {
            #region 初始化组织架构

            ///初始化数据库连接字符串
            IMLibrary.SqlData.DataAccess.ConnectionString = DBHelper.settings.SqlConStr;


            /// 初始化用户
            if (Users == null)
            {
                Users = DBHelper.GetUserVcards();
            }


            /// 获取组织机构版本和信息
            {
                orgVersion = DBHelper.ResetOrgVersion(); //重设组织架构版本相关信息
            }

            #region  初始化群
            if (Rooms == null)
            {
                Rooms = DBHelper.GetRooms();
                foreach (Room room in Rooms.Values)
                {
                    #region 将内存中的用户添加到内存中的群
                    string[] userids = room.UserIDs.Split(';');
                    foreach (string userID in userids)
                    {
                        UserVcard user = getUser(userID);
                        if (user != null)
                        {
                            if (room.Users == null)
                            {
                                room.Users = new Dictionary <string, User>();
                            }
                            if (!room.Users.ContainsKey(userID))
                            {
                                if (room.CreateUserID == userID)
                                {
                                    user.CreatedRoomsCount++;                             //标记用户已创建群数
                                }
                                room.Users.Add(user.UserID, user);
                            }

                            if (user.Rooms == null)
                            {
                                user.Rooms = new Dictionary <string, Room>();
                            }
                            if (!user.Rooms.ContainsKey(room.RoomID))
                            {
                                user.Rooms.Add(room.RoomID, room);
                            }
                        }
                    }

                    room.UserIDs = "";//重新生成群包含的Users
                    foreach (User u in GetUsers(room))
                    {
                        room.UserIDs += u.UserID + ";";
                    }

                    #endregion
                }
            }
            #endregion

            #endregion

            //启动消息服务
            if (msgServer == null)
            {
                msgServer                          = new MsgServer(MessageServerPort);
                msgServer.Login                   += new MsgServer.MsgServerEventHandler(msgServer_Login);
                msgServer.UserOffline             += new MsgServer.MsgServerEventHandler(msgServer_UserOffline);
                msgServer.Message                 += new MsgServer.MsgServerEventHandler(msgServer_Message);
                msgServer.Presence                += new MsgServer.MsgServerEventHandler(msgServer_Presence);
                msgServer.RequestChangeGroupVcard += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeGroupVcard);
                msgServer.RequestChangePassword   += new MsgServer.MsgServerEventHandler(msgServer_RequestChangePassword);
                msgServer.RequestChangeRoom       += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeRoom);
                msgServer.RequestChangeUserVcard  += new MsgServer.MsgServerEventHandler(msgServer_RequestChangeUserVcard);
                msgServer.RequestOrgGroups        += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgGroups);
                msgServer.RequestOrgRooms         += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgRooms);
                msgServer.RequestOrgUsers         += new MsgServer.MsgServerEventHandler(msgServer_RequestOrgUsers);
                msgServer.RequestUsersPresence    += new MsgServer.MsgServerEventHandler(msgServer_RequestUsersPresence);
                msgServer.RouteDownLoadImageFile  += new MsgServer.MsgServerEventHandler(msgServer_RouteDownLoadImageFile);
                msgServer.RouteP2PFileTransmit    += new MsgServer.MsgServerEventHandler(msgServer_RouteP2PFileTransmit);
                msgServer.RouteAVMsg              += new MsgServer.MsgServerEventHandler(msgServer_RouteAVMsg);
            }
            msgServer.Start();

            //启动P2P文件服务
            if (p2pFileServer == null)
            {
                p2pFileServer = new P2PFileServer(P2PFileServerPort);
            }
            p2pFileServer.Start();

            //启动图片文件服务
            if (imageFileServer == null)
            {
                imageFileServer = new ImageFileServer(ImageFileServerPort);
            }
            imageFileServer.Start();

            //启动音视频传输服务
            if (p2pAVServer == null)
            {
                p2pAVServer = new P2PAVServer(P2PAVServerPort);
            }
            p2pAVServer.Start();
        }