/// <summary> /// 序列化 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string Serializer(SocketInfo info) { return JsonConvert.SerializeObject(info); }
private void Rec(SocketHelper.Sockets sks) { IPEndPoint _ip = new IPEndPoint(IPAddress.Any, 60000); if (sks.ex != null) { //在此处理异常信息 WriteLog(string.Format("客户端出现异常:{0}.!", sks.ex.Message)); //ServerInfo _info = new ServerInfo() { Ip = sks.Ip }; ClientRemove(sks.Ip); //labClientCount.Text = (cmbClient.Items.Count).ToString(); } else { if (sks.NewClientFlag) { WriteLog(string.Format("新客户端:{0}连接成功.!", sks.Ip)); //(sks.Ip.ToString()); //labClientCount.Text = (cmbClient.Items.Count).ToString(); } else { byte[] buffer = new byte[sks.Offset]; Array.Copy(sks.RecBuffer, buffer, sks.Offset); string str = string.Empty; if (sks.Offset == 0) { str = sks.Ip.ToString()+" 客户端下线"; WriteLog(str); ClientRemove(sks.Ip); //labClientCount.Text = (cmbClient.Items.Count).ToString(); } else { try { str = Encoding.UTF8.GetString(buffer); SocketInfo _info = new SocketInfo(); _info = Derializer(str); if (_info.Order==SocketOrder.Login) { if (!CheckClientIsHaving(_info.ClientName,out _ip)) { ClientAdd(new ServerInfo() { AimName = _info.AimName, ClientName = _info.ClientName, Ip = sks.Ip }); } else { SendToClient(sks.Ip, "服务器存在相同名称客户端,请重命名."); } } else { if (CheckClientIsHaving(_info.AimName, out _ip)) { WriteLog(string.Format("{0}向{1}发送:{2}", _info.ClientName, _info.AimName, _info.DataInfo)); SendToClient(_ip, _info.DataInfo); } else { WriteLog("没找到目标服务器,转发失败,已反馈到源服务器"); SendToClient(sks.Ip, "发送失败,目标服务器可能已经离线.."); } } } catch (Exception ex) { throw; } } } } }