private void Rec(SocketHelper.Sockets sks) { if (sks.ex != null) { //在这里判断ErrorCode 可以自由扩展 switch (sks.ErrorCode) { case SocketHelper.Sockets.ErrorCodes.objectNull: break; case SocketHelper.Sockets.ErrorCodes.ConnectError: break; case SocketHelper.Sockets.ErrorCodes.ConnectSuccess: DgLog("连接成功..."); IsConnect = true; info.Order=SocketOrder.Login; client.SendData(Serializer(info)); break; case SocketHelper.Sockets.ErrorCodes.TrySendData: break; default: break; } if (sks.ErrorCode != SocketHelper.Sockets.ErrorCodes.ConnectSuccess) { DgLog(string.Format("{0}", sks.ex)); IsConnect = false; } } else { byte[] buffer = new byte[sks.Offset]; Array.Copy(sks.RecBuffer, buffer, sks.Offset); string str = Encoding.UTF8.GetString(buffer); if (str == "ServerOff") { DgLog("服务端主动关闭,即将尝试重新连接..."); IsConnect = false; } else { DgMessage(string.Format("服务端{0}发来消息:{1}", sks.Ip, str)); //txtThis.Text += "\r\n"; //txtThis.Text += string.Format("服务端{0}发来消息:{1}", sks.Ip, str); } } }
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; } } } } }