Beispiel #1
0
        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("无法连接用户");
                    }
                }
            }
        }
Beispiel #2
0
        //检测函数,检测客户端是否关闭,检测异常关闭以及挂掉
        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());
                    }
                }
            }
        }