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); }
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; }
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); }
public void GetDelegateTest() { ServerDelegate serverDelegate = discoverer.Delegate; Assert.IsNotNull(serverDelegate); Assert.IsFalse(serverDelegate.Searching); }
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); } }
public void DiscoverAndStopTest() { ServerDelegate serverDelegate = discoverer.Delegate; discoverer.Search(); Assert.IsTrue(serverDelegate.Searching); discoverer.Stop(); Assert.IsFalse(serverDelegate.Searching); }
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); }
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); }
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); }
static extern void ServerConnect(int serverport, double fps, ServerDelegate ServerConnectionStatus);
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); } }