static void server_offline(object sender, ServerAcceptEventArgs args) { Debug.WriteLine("OffLine!"); var str = tcpmap[sender as TcpClient]; server.ServerSendAll(new UserMessage(8, str, 0)); }
static void server_offline(object sender, ServerAcceptEventArgs args) { try{ Debug.WriteLine("OffLine!"); var str = tcpmap[sender as TcpClient]; server.ServerSendAll(new UserMessage(8, str, 0)); } catch (Exception e2) { MessageBox.Show("Server.server_offline" + e2.Message); } }
/// <summary> /// 服务器监听函数 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private static void server_accept(object sender, ServerAcceptEventArgs args) { NetworkStream Ns = args.client.GetStream(); var Formatter = new BinaryFormatter(); Object obj = Formatter.Deserialize(Ns); var Message = (UserMessage)obj; byte[] current_client_ip = UserExt.IPStringToByte(((System.Net.IPEndPoint)(args.client).Client.RemoteEndPoint).Address.ToString()); if (isdebug) { Console.WriteLine("Client accept!"); Console.WriteLine("client ip:" + UserExt.IPByteToString(current_client_ip)); } //获得数据,不同请求类型对应不同的数据 Object Data = Message.data; //定义返回数据 Object ReturnObject = null; switch (Message.type) { case 1: //注册功能实现 //添加个人信息至数据库 //返回id给客户端done ReturnObject = UserRegist((RegisterData)Data); break; case 2: //登陆功能实现,done ReturnObject = UserLogin((LoginData)Data, current_client_ip); break; case 3: //确认在线,//更新活力值接收在线消息,done ReturnObject = HoldLineAndGetMessage((int)Data); break; case 4: //邀请好友使用某插件 ReturnObject = InviteFriendToUsePlugin((List <int>)Data); break; case 5: //注册用户名校验,done ReturnObject = CheckUsernameRegistable((string)Data); break; case 6: //搜索符合条件的好友,目前只是按全名字匹配搜索 = = List <User> list_u = SearchUserByName(Data as string); foreach (var item in list_u) { if (isOnline(item.user_id)) { item.ip = OnlineUserManager.user_list[item.user_id].IP; } } ReturnObject = list_u; break; case 7: //添加好友 ReturnObject = AskToBeFriend((AddFriendData)Data); break; case 8: //用户更新资料 ReturnObject = UserInfoSlefUpdate((User)Data); break; case 9: //修改密码 ,如果原密码正确才进行修改密码操作,否则返回-1 ReturnObject = UserPasswordModify((UpdatePasswordData)Data); break; case 10: //获取指定id用户的所有信息 User ur = SqlManager.getUserById((int)Data, true); if (isOnline(ur.user_id)) { ur.ip = OnlineUserManager.user_list[ur.user_id].IP; } ReturnObject = ur; break; case 11: //根据id获取群组的的数据信息 ReturnObject = SqlManager.getGroupById((int)Data); break; case 12: //批量获取用户和群组的信息 ReturnObject = "尼玛什么都没有行了吧"; break; case 13: //处理同意加某人为好友 myid friendid ReturnObject = OnlineUserManager.dealToMakeFriend((int[])Data); break; case 14: //确认已经读过某消息 ReturnObject = ConfirnUserMessage((int[])Data); break; case 15: //创建新群组 List <object> temp_pram = (List <object>)Data; ReturnObject = SqlManager.createAGroup((int)(temp_pram[0]), (String)(temp_pram[1]), (String)(temp_pram[2])); break; } try { Formatter.Serialize(Ns, ReturnObject);//将要返回的对象串行化并放入数据流 } catch (Exception e) { Console.WriteLine("{0}-唉,{1}", Message.type, e.Message); } }