private void DoDisagreeJoinGroup(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); dbf.DisagreeJoinGroup(int.Parse(analy.GetParaIndexOf(1)), analy.GetParaIndexOf(0)); string msg = "Server#" + OpType.DISAGREE_JOIN_GROUP_RES + "#" + analy.GetParaIndexOf(0) + "#" + analy.GetParaIndexOf(1); if (OLList.IsOnLine(analy.GetParaIndexOf(0))) { SmallUser sUser = OLList.GetUserByID(analy.GetParaIndexOf(0)); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(msg); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } }
//发送群组消息,如果在线则提示对方,如果不在线则送到离线数据库 private void DoSendGroupMsg(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); List <UserInfo> list = dbf.GetMembersInGroup(int.Parse(analy.GetParaIndexOf(1))); list.Add(dbf.GetUserInfo(dbf.GetGroupInfo(int.Parse(analy.GetParaIndexOf(1))).GroupCreator)); string msg = "Server#" + OpType.SEND_GROUP_MSG_RES + "#" + analy.GetParaIndexOf(0) + "#" + dbf.GetUserInfo(analy.GetParaIndexOf(0)).UserName + "#" + analy.GetParaIndexOf(1) + "#" + analy.GetParaFromIndex(2); foreach (UserInfo user in list) { if (OLList.IsOnLine(user.UserID)) { SmallUser sUser = OLList.GetUserByID(user.UserID); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(msg); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } else { dbf.SendOffLineMessage(user.UserID, analy.GetParaIndexOf(0), analy.GetParaFromIndex(2)); } } }
//应该确保不是加入自己创建的群组,以及应该没有已有的请求,否则返回空的想序列值 private string DoJoinGroup(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); string msg = "Server#" + OpType.JOIN_GROUP_RES; if (!dbf.GetGroupInfo(int.Parse(analy.GetParaIndexOf(1))).GroupCreator.Equals(analy.GetParaIndexOf(0)) && !dbf.EntityExists(int.Parse(analy.GetParaIndexOf(1)), analy.GetParaIndexOf(0))) { msg += "#" + dbf.RequestJoinGroup(int.Parse(analy.GetParaIndexOf(1)), analy.GetParaIndexOf(0)); string notice = "Server#" + OpType.JOIN_GROUP_NOTE + "#" + analy.GetParaIndexOf(0) + "#" + analy.GetParaIndexOf(1); if (OLList.IsOnLine(dbf.GetGroupInfo(int.Parse(analy.GetParaIndexOf(1))).GroupCreator)) { SmallUser sUser = OLList.GetUserByID(dbf.GetGroupInfo(int.Parse(analy.GetParaIndexOf(1))).GroupCreator); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(notice); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } } return(msg); }
private void DoAgreeFriendRequest(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); dbf.AgreeFriendRequest(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1)); string msg = "Server#" + OpType.AGREE_FRIEND_REQUEST_RES + "#" + analy.GetParaIndexOf(0) + "#" + analy.GetParaIndexOf(1); if (OLList.IsOnLine(analy.GetParaIndexOf(1))) { SmallUser sUser = OLList.GetUserByID(analy.GetParaIndexOf(1)); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(msg); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } }
//这里调用时应该注意应确保两者不是好友,且两者没有未处理的加好友请求,否则返回空的序列值 private string DoSendFriendRequest(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); string msg = "Server#" + OpType.SEND_FRIEND_REQUEST_RES; if (!dbf.IsFriend(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1)) && !dbf.RequestExists(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1)) && !dbf.RequestExists(analy.GetParaIndexOf(1), analy.GetParaIndexOf(0)) && !analy.GetParaIndexOf(0).Equals(analy.GetParaIndexOf(1))) { msg += "#" + dbf.RequestFriend(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1)); string notice = "Server#" + OpType.SEND_FRIEND_REQUEST_NOTE + "#" + analy.GetParaIndexOf(0) + "#" + analy.GetParaIndexOf(1); if (OLList.IsOnLine(analy.GetParaIndexOf(0))) { SmallUser sUser = OLList.GetUserByID(analy.GetParaIndexOf(0)); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(notice); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } } return(msg); }
private void DoLogout(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); OLList.OffLined(analy.GetParaIndexOf(0)); string msg = "Server#" + OpType.LOGOUT_NOTE + "#" + analy.GetParaIndexOf(0); foreach (string userID in OLList.GetAllOLUsersID()) { if (dbf.IsFriend(userID, analy.GetParaIndexOf(0))) { SmallUser sUser = OLList.GetUserByID(userID); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); try { client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(msg); client.ReLeaseAll(); } catch (Exception e) { System.Console.WriteLine("无法连接用户"); } } } }
private string DoLogin(string formatString) { AnalysisStr analy = new AnalysisStr(formatString); DBFunction dbf = new DBFunction(); string format = "Server#" + OpType.LOGIN_RES + "#"; format += (dbf.Login(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1)) == true?1:0); if (dbf.Login(analy.GetParaIndexOf(0), analy.GetParaIndexOf(1))) { string IP = endPoint.Address.ToString(); int Port = endPoint.Port; OLList.OnLined(new SmallUser(analy.GetUserID(), IP, Port)); string msg = "Server#" + OpType.INFORM_FRIENDS + "#" + analy.GetParaIndexOf(0); foreach (string userID in OLList.GetAllOLUsersID()) { if (dbf.IsFriend(analy.GetParaIndexOf(0), userID)) { SmallUser sUser = OLList.GetUserByID(userID); CClient client = new CClient(sUser.IPAddress, sUser.IPPort); client.ConnectToServer(); client.GetNetworkStream(); client.Communicate(msg); client.ReLeaseAll(); } } } return(format); }
//用户在线时将临时信息填入哈希表 public void OnLined(SmallUser user) { if (!hashTB.ContainsKey(user.UserID)) { hashTB.Add(user.UserID, user); } else if (!user.IPAddress.Equals(((SmallUser)hashTB[user.UserID]).IPAddress) || user.IPPort != ((SmallUser)hashTB[user.UserID]).IPPort) { hashTB.Remove(user.UserID); hashTB.Add(user.UserID, user); } }
//用户在线时将临时信息填入哈希表 public void OnLined(SmallUser user) { hashTB.Add(user.UserID, user); }