/// <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(); }
/// <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(); }