public bool Send(int cmd, string message) { bool ret = false; if (_Socket == null) { LogHelper.Error("发送信息失败!连接已经断开"); return(ret); } CMD_BASE_MESSAGE rep = new CMD_BASE_MESSAGE(); rep.Cmd = cmd; rep.Message = message; MemoryStream ms = MessageTransformation.Serialize <CMD_BASE_MESSAGE>(rep); byte[] entityData = ms.ToArray(); byte[] messagedate = MessageCoder.MessageEncoding(entityData); //_Socket.Send(messagedate); SendAsync(messagedate, 0, messagedate.Length); ret = true; return(ret); }
public void DoWork(GameWorld world) { CMD_BASE_MESSAGE mss2 = MessageTransformation.Deserialize <CMD_BASE_MESSAGE>(_Ms); Console.WriteLine("cmd:{0},message:{1} ThreadId:{2}", mss2.Cmd, mss2.Message, Thread.CurrentThread.ManagedThreadId.ToString()); //TODO::报文解析业务实现 }
public void DoWork(GameWorld world) { try { CMD_BASE_MESSAGE mss2 = MessageTransformation.Deserialize <CMD_BASE_MESSAGE>(_Ms); world.ExecuteCmd(mss2.Cmd, mss2.Message, _Session); } catch (Exception ex) { LogHelper.Error("MessageWorkItem:DoWork error:{0}", ex.Message); } }
public void SendTestMessage() { CMD_BASE_MESSAGE rep = new CMD_BASE_MESSAGE(); rep.Cmd = 11; rep.Message = "bsadsdfasf"; MemoryStream ms = MessageTransformation.Serialize <CMD_BASE_MESSAGE>(rep); byte[] entityData = ms.ToArray(); byte[] messagedate = MessageCoder.MessageEncoding(entityData); _socket.Send(messagedate, messagedate.Length, 0); }
void CreatOneConnect() { try { int port = 2012; string host = "127.0.0.1"; //string host = "134.175.17.67"; IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); //把ip和端口转化为IPEndPoint实例 Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建一个Socket Console.WriteLine("Conneting..."); c.Connect(ipe); //连接到服务器 CMD_BASE_MESSAGE rep = new CMD_BASE_MESSAGE(); rep.Cmd = 11; rep.Message = "bsadsdfasf"; MemoryStream ms = MessageTransformation.Serialize <CMD_BASE_MESSAGE>(rep); byte[] entityData = ms.ToArray(); byte[] messagedate = MessageCoder.MessageEncoding(entityData); c.Send(messagedate, messagedate.Length, 0); c.Send(messagedate, messagedate.Length, 0); c.Send(messagedate, messagedate.Length, 0); c.Send(messagedate, messagedate.Length, 0); c.Send(messagedate, messagedate.Length, 0); c.Send(messagedate, messagedate.Length, 0); Console.Write("断开连接"); c.Close(); } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException: {0}", e); } catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); } }
private void PushLocalBuffer(byte[] buffer, int offset, int count) { if ((_ReceiveOffset + count) > _ReceiveBuffer.Length) { throw new Exception("客户端信息数据超出当前接收缓存大小!"); } Array.Copy(buffer, offset, _ReceiveBuffer, _ReceiveOffset, count); _ReceiveOffset += count; Console.WriteLine("添加数据缓存 当前缓存长度:{0}", _ReceiveOffset); List <byte[]> messagebuffers = MessageCoder.MessageDecoding(ref _ReceiveBuffer, ref _ReceiveOffset); foreach (var mm in messagebuffers) { MemoryStream ms = new MemoryStream(mm, 0, mm.Length); CMD_BASE_MESSAGE mss2 = MessageTransformation.Deserialize <CMD_BASE_MESSAGE>(ms); strReceiveMessage += "|" + mss2.Message; } }