Esempio n. 1
0
        public void RefreshOnLineUser()
        {
            ServerDelegate temp = str =>
            {
                cmbUserList.Items.Clear();
                foreach (GGUserInfo user in user_list)
                {
                    cmbUserList.Items.Add(user.userNickName);
                }
                if (cmbUserList.Items.Count > 0)
                {
                    cmbUserList.SelectedIndex = 0;
                }
                else if (cmbUserList.Items.Count == 0)
                {
                    cmbUserList.Text = string.Empty;
                }
            };

            cmbUserList.Invoke(temp, "");

            temp = count =>
            {
                label6.Text = "当前在线用户人数:" + count + "人";
            };
            label6.Invoke(temp, cmbUserList.Items.Count);
            notifyIcon1.Text = string.Format("服务器IP:{0}\r\n端口号:{1}\r\n在线人数:{2}", txtIP.Text, txtPoint.Text, user_list.Count);
        }
Esempio n. 2
0
        public MasterAPI(string[] pcsUrls)
        {
            Servers         = new ConcurrentDictionary <string, IServer>();
            ServerUrls      = "";
            ServerIdsToUrls = new ConcurrentDictionary <string, string>();

            Clients = new ConcurrentDictionary <string, IClient>();

            PCSs = new ConcurrentDictionary <string, ProcessCreationService>();
            foreach (string url in pcsUrls)
            {
                PCSs.TryAdd(BaseUrlExtractor.Extract(url), (ProcessCreationService)Activator.GetObject(typeof(ProcessCreationService), url));
            }

            _startProcessDelegate = new StartProcessDelegate(StartProcess);

            _serverDelegate         = new ServerDelegate(ServerSync);
            _clientDelegate         = new ClientDelegate(ClientSync);
            _addRoomDelegate        = new AddRoomDelegate(AddRoomSync);
            _statusDelegate         = new StatusDelegate(StatusSync);
            _crashDelegate          = new CrashDelegate(CrashSync);
            _freezeDelegate         = new FreezeDelegate(FreezeSync);
            _unfreezeDelegate       = new UnfreezeDelegate(UnfreezeSync);
            _shutDownSystemDelegate = new ShutDownSystemDelegate(ShutDownSystemSync);

            _checkNodeStatusDelegate = new CheckNodeStatus(CheckNode);

            _nodesCreated = 0;
        }
Esempio n. 3
0
        public void RefreshOnLineUser()
        {
            ServerDelegate temp = str =>
            {
                cmbUserList.Items.Clear();
                foreach (KeyValuePair <string, GGUserInfo> user in OnlineUserUtils.GetAllOnlineClients())
                {
                    cmbUserList.Items.Add(user.Key);
                }
                if (cmbUserList.Items.Count > 0)
                {
                    //cmbUserList.SelectedItem = UserUtils.onlineUserListDir.;
                }
                else if (cmbUserList.Items.Count == 0)
                {
                    cmbUserList.Text = string.Empty;
                }
            };

            cmbUserList.Invoke(temp, "");

            temp = count =>
            {
                label6.Text = "当前在线用户人数:" + count + "人";
            };
            label6.Invoke(temp, cmbUserList.Items.Count);
            notifyIcon1.Text = string.Format("服务器IP:{0}\r\n端口号:{1}\r\n在线人数:{2}", txtIP.Text, txtPoint.Text, OnlineUserUtils.GetAllOnlineClients().Count);
        }
Esempio n. 4
0
        public void GetDelegateTest()
        {
            ServerDelegate serverDelegate = discoverer.Delegate;

            Assert.IsNotNull(serverDelegate);
            Assert.IsFalse(serverDelegate.Searching);
        }
Esempio n. 5
0
        public void GetClientConnection()
        {
            try
            {
                while (true)
                {
                    //接收客户端发来的身份信息
                    Socket     clientSocket = serverSocket.Accept();
                    object     obj          = clientSocket.RemoteEndPoint;
                    string     nameAndPwd   = Tools.GetString(clientSocket);
                    string[]   arr          = nameAndPwd.Split('|');
                    string     sql          = string.Format("select*from GGUser where userId='{0}' and userPwd='{1}'", arr[0], arr[1]);
                    DataTable  dt           = DBHelper.Select(sql);
                    GGUserInfo user         = new GGUserInfo();
                    if (dt.Rows.Count == 1)
                    {
                        foreach (DataRow item in dt.Rows)
                        {
                            user.createTime   = Convert.ToDateTime(item["createTime"]);
                            user.qqSign       = item["qqSign"].ToString();
                            user.userAutoid   = Convert.ToInt32(item["userAutoid"]);
                            user.userImg      = item["userImg"].ToString();
                            user.userNickName = item["userNickName"].ToString();
                            user.userId       = item["userId"].ToString();
                            user.isOnLine     = Convert.ToBoolean(item["isOnLine"]);
                        }
                        IPEndPoint clientIPEndPoint = new IPEndPoint(IPAddress.Parse(arr[2]), Convert.ToInt32(arr[3]));
                        Socket     tempClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    }
                    else
                    {
                    }


                    return;

                    user_list.Add(user); //保存用户信息
                    RefreshOnLineUser(); //刷新用户
                    ServerDelegate temp = msg =>
                    {
                        byte[] bytes = Encoding.UTF8.GetBytes(arr[0]);
                        AppendMsgToServerChatList(msg + "进入了聊天室" + Environment.NewLine + clientSocket.RemoteEndPoint + "连接到服务器", null, false);
                    };
                    serverChatRecords.Invoke(temp, arr[0]);
                    ServerThread myThread = new ServerThread(user, serverChatRecords, cmbUserList, label6);
                    foreach (GGUserInfo item in user_list)
                    {
                        if (item.userNickName != arr[0])
                        {
                            Tools.ServerSendMsgToClient(item.UserSocket, Convert.ToByte(MsgType.刷新在线用户), "【" + arr[0] + "】进入了聊天室");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("服务端接受连接的客户端:" + ex.Message);
            }
        }
Esempio n. 6
0
        public void DiscoverAndStopTest()
        {
            ServerDelegate serverDelegate = discoverer.Delegate;

            discoverer.Search();
            Assert.IsTrue(serverDelegate.Searching);
            discoverer.Stop();
            Assert.IsFalse(serverDelegate.Searching);
        }
Esempio n. 7
0
 private void AsyncCallServer(ServerDelegate caller, string server_id, string URL, int min_delay, int max_delay,
                              IEnumerable <string> serverUrls)
 {
     caller.BeginInvoke(server_id, URL, min_delay, max_delay, serverUrls, asyncResult =>
     {
         AsyncResult ar           = (AsyncResult)asyncResult;
         ServerDelegate remoteDel = (ServerDelegate)ar.AsyncDelegate;
         remoteDel.EndInvoke(asyncResult);
     }, null);
 }
Esempio n. 8
0
        public ServerTreeView()
            : base()
        {
            this.serverDataList = new Hashtable(10);  // Will expact a capacity of no more than 10

            this.addInvokeHandler = new ServerDelegate(InvokedAdd);

            this.clearInvokeHandler = new EventHandler(ClearNodes);
            this.removeInvokeHandler = new EventHandler(InvokeRemove);
            this.AfterSelect += new TreeViewEventHandler(ServerListView_AfterSelect);
        }
Esempio n. 9
0
        public ServerListView()
            : base()
        {
            this.serverDataList = new Hashtable(10);  // Will expact a capacity of no more than 10
            this.serverImageList = new ImageList();
            this.serverImageList.ImageSize = new System.Drawing.Size(64, 64);
            this.LargeImageList = serverImageList;

            this.addInvokeHandler = new ServerDelegate(InvokedAdd);
            this.clearInvokeHandler = new EventHandler(ClearItems);
            this.removeInvokeHandler = new EventHandler(InvokeRemove);
            this.Activation = ItemActivation.OneClick;
            this.ItemActivate += new EventHandler(ServerListView_ItemActivate);
        }
Esempio n. 10
0
 static extern void ServerConnect(int serverport, double fps, ServerDelegate ServerConnectionStatus);
Esempio n. 11
0
        public void GetClientConnection()
        {
            try
            {
                while (true)
                {
                    //1. 服务器接收客户端发来的身份信息
                    //2. 根据发来的信息进行账号验证
                    //3. 反馈给客户端
                    Socket            clientSocket = serverSocket.Accept();
                    string            nameAndPwd   = ToolUtils.GetString(clientSocket);
                    MessageInfo       fromInfo     = SerializerUtil.JsonToObject <MessageInfo>(nameAndPwd);
                    string            sql          = string.Format("select * from GGUser where userId='{0}' and userPwd='{1}'", fromInfo.fromId, fromInfo.fromPwd);
                    List <GGUserInfo> userList     = DBHelper.ConvertToExtModel <GGUserInfo>(sql);

                    toInfo.socket   = clientSocket;
                    toInfo.dateTime = DateTime.Now;
                    if (userList.Count == 1)
                    {
                        GGUserInfo user = userList[0];
                        if (OnlineUserUtils.GetAllOnlineClients().ContainsKey(user.userId))
                        {
                            toInfo.msgType = MsgType.已登录;
                            toInfo.content = GGUserUtils.ShowNickAndId(user) + "已登录";
                            SocketUtils.SendToSingleClient(toInfo);
                        }
                        else
                        {
                            user.socket = clientSocket;
                            //保存用户信息
                            OnlineUserUtils.AddOnlineClient(user.userId, user);
                            //保存在线客户端用户的ids
                            ChatDBUtils.onlineUserStr = OnlineUserUtils.GetOnlineUserStr();
                            //刷新用户
                            RefreshOnLineUser();
                            //服务器反馈客户端
                            toInfo.msgType = MsgType.登陆成功;
                            toInfo.content = SerializerUtil.ObjectToJson <GGUserInfo>(user);
                            SocketUtils.SendToSingleClient(toInfo);
                            //在服务器面板显示记录
                            ServerDelegate temp = msg =>
                            {
                                toInfo.msgType = MsgType.系统消息;
                                toInfo.content = "[ " + msg + "连接到服务器 ]   <--->   " + GGUserUtils.ShowNickAndId(user) + "进入了聊天室";
                                //显示到服务器端
                                ChatUtils.AppendMsgToServerChatList(this.serverChatRecords, toInfo);
                            };
                            serverChatRecords.Invoke(temp, clientSocket.RemoteEndPoint);
                            //聊天线程
                            ServerThread myThread = new ServerThread(user, this.serverChatRecords, this.cmbUserList, this.label6);

                            //上线提醒其他客户端
                            toInfo.msgType = MsgType.线;
                            toInfo.fromId  = user.userId;
                            //获取好友列表
                            List <GGGroup>    group      = ChatDBUtils.GetGroupFriendsInfo(user.userId);
                            List <GGUserInfo> friendList = ChatDBUtils.GetFriendsInfo(user.userId);
                            //同时通知自己
                            friendList.Add(user);
                            toInfo.content = ChatDBUtils.GetPerFriendsStr(user.userId);
                            SocketUtils.SendToOnlineFriendClients(OnlineUserUtils.GetAllOnlineClients(), friendList, toInfo);
                            //SocketUtils.SendToMultiClients(OnlineUserUtils.GetAllOnlineClients(), toInfo);

                            toInfo.content = GGUserUtils.ShowNickAndId(user) + "上线,需通知其好友 " + ChatDBUtils.GetPerOnlineFriendsStr(user.userId) + " 刷新在线好友状态";
                            //显示到客户端
                            ChatUtils.AppendMsgToServerChatList(this.serverChatRecords, toInfo);
                        }
                    }
                    else if (userList.Count == 0)
                    {
                        toInfo.msgType = MsgType.登陆失败;
                        toInfo.content = "登陆失败,未找到账号";
                        SocketUtils.SendToSingleClient(toInfo);
                    }
                    else
                    {
                        toInfo.msgType = MsgType.登陆失败;
                        toInfo.content = "登陆失败,找到多个账号";
                        SocketUtils.SendToSingleClient(toInfo);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageInfo toInfo = new MessageInfo();
                toInfo.msgType = MsgType.异常报告;
                toInfo.content = "服务端[" + this.GetType() + this.Name + "]接受连接的客户端:" + ex.Message;
                ChatUtils.AppendMsgToServerChatList(this.serverChatRecords, toInfo);
                //MessageBox.Show("服务端[" + this.GetType() + this.Name + "]接受连接的客户端:" + ex.Message);
            }
        }