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("无法连接用户"); } } } }
//检测函数,检测客户端是否关闭,检测异常关闭以及挂掉 public void TrueOnLineUsers() { foreach (string userID in OLList.GetAllOLUsersID()) { if (OLList.IsOnLine(userID)) { try { CClient client = new CClient(OLList.GetUserByID(userID).IPAddress, OLList.GetUserByID(userID).IPPort); client.ConnectToServer(); client.GetNetworkStream(); client.Communicate("###"); client.ReLeaseAll(); } catch (Exception e) { OLList.OffLined(userID); System.Console.WriteLine(userID + "客户端异常关闭,现在在线用户数量:" + OLList.Length()); } } } }