//发送 public static void Send(ClientState cs, MsgBase msg) { //状态判断 if (cs == null) { return; } if (!cs.socket.Connected) { return; } //数据编码 byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len]; //组装长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); //为简化代码,不设置回调 try{ cs.socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, null, null); }catch (SocketException ex) { Console.WriteLine("Socket Close on BeginSend" + ex.ToString()); } }
public static void Send(ClientState state, MsgBase msg) { if (state == null || !state.socket.Connected) { return; } byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int length = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[length + 2]; sendBytes[0] = (byte)(length % 256); sendBytes[1] = (byte)(length / 256); Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); try { Console.WriteLine("Send { " + msg.msgName + " } to " + state.socket.RemoteEndPoint); state.socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, null, null); } catch (SocketException ex) { Console.WriteLine("Socket send message error " + ex.ToString()); } }
//发送 public static void Send(ClientState cs, MsgBase msg) { //状态判断 if (cs == null) { return; } if (!cs.socket.Connected) { return; } //数据编码 byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len]; //组装长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); //为简化代码,调用同步方法 cs.socket.Send(sendBytes); }
public static void Send(ClientState cs, MsgBase msg) { if (cs == null) { return; } if (!cs.socket.Connected) { return; } byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new Byte[2 + len]; sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); try { cs.socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, null, null); } catch (SocketException ex) { Debug.WriteLine("Socket Close on BeginSend {0}", ex.ToString()); throw; } }
public static void Send(ClientState state, MsgBase msgBase) { if (!state.socket.Connected || state == null) { return; } byte[] nameBytes = MsgBase.EncodeName(msgBase); byte[] bodyBytes = MsgBase.Encode(msgBase); Int16 len = (Int16)(nameBytes.Length + bodyBytes.Length); byte[] readBuff = new byte[len + 2]; readBuff[0] = (byte)(len % 256); readBuff[1] = (byte)(len / 256); Array.Copy(nameBytes, 0, readBuff, 2, nameBytes.Length); Array.Copy(bodyBytes, 0, readBuff, 2 + nameBytes.Length, bodyBytes.Length); ByteArray array = new ByteArray(readBuff); try { state.socket.BeginSend(array.bytes, array.readIndex, array.length, 0, SendCallBack, state); } catch (Exception ex) { Console.WriteLine("Socket Close On BeginSend " + ex.ToString()); } }
public static void Test() { MsgMove msgMove = new MsgMove(); msgMove.x = 45; byte[] bytes = MsgBase.Encode(msgMove); Console.WriteLine(Encoding.UTF8.GetString(bytes)); MsgMove msg = (MsgMove)MsgBase.Decode("MsgMove", bytes, 0, bytes.Length); Console.WriteLine(msg.x); if (DbManager.CreatePlayer("zjt")) { Console.WriteLine("成功创建"); } if (DbManager.Register("wyl", "123456")) { Console.WriteLine("成功注册"); } PlayerData playerData = DbManager.GetPlayerData("zjt"); if (playerData != null) { Console.WriteLine("玩家的金币是:{0}", playerData.coin); } }
//发送数据 public static void Send(MsgBase msg) { //状态判断 if (socket == null || !socket.Connected) { return; } if (isConnecting) { return; } if (isClosing) { return; } //数据编码 byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int len = nameBytes.Length + bodyBytes.Length; // byte[] sendBytes = new byte[INT32+len+1]; // sendBytes[INT32+len] = System.Text.Encoding.UTF8.GetBytes("\n")[0]; byte[] sendBytes = new byte[INT32 + len]; byte[] lenBytes = ArrayUtils.intToByteArray(len); for (int i = 0; i < INT32; i++) { sendBytes[i] = lenBytes[i]; } //组装长度 // sendBytes[0] = (byte)(len%256); // sendBytes[1] = (byte)(len/256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, INT32, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, INT32 + nameBytes.Length, bodyBytes.Length); // for(int i=0;i<sendBytes.Length;i++){ // Debug.Log(sendBytes[i]); // } //写入队列 ByteArray ba = new ByteArray(sendBytes); int count = 0; //writeQueue的长度 lock (writeQueue){ writeQueue.Enqueue(ba); count = writeQueue.Count; } //send if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } }
// 发送数据 public static void Send(MsgBase msg) { // 状态判断 if (socket == null || !socket.Connected) { return; } if (isConnecting) { return; } if (isClosing) { return; } // 数据编码 byte[] nameBytes = MsgBase.EncodeName(msg); // 协议名长度+协议名 byte[] bodyBytes = MsgBase.Encode(msg); // 协议体 int len = nameBytes.Length + bodyBytes.Length; // 总长度 byte[] sendBytes = new byte[2 + len]; // 组装总长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); // 组装协议名 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); // 组装协议体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); // 写入队列 ByteArray ba = new ByteArray(sendBytes); int count = 0; // writeQueue的长度 lock (writeQueue) { writeQueue.Enqueue(ba); count = writeQueue.Count; } // Send if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } }
//发送数据 public static void Send(MsgBase msg) { if (socket == null || !socket.Connected) { return; } if (isConnecting) { return; } if (isClosing) { return; } //数据编码 byte[] nameBytes = MsgBase.EncodeName(msg); //名字 byte[] bodyBytes = MsgBase.Encode(msg); //消息体 int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len]; //组装长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); //写入队列 ByteArray ba = new ByteArray(sendBytes); int count = 0; lock (writeQueue) //lock 避免线程冲突 { writeQueue.Enqueue(ba); count = writeQueue.Count; } //send if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } }
public static void Send(MsgBase msg) { if (socket == null || !socket.Connected) { return; } if (isConnecting) { return; } if (isClosing) { return; } byte[] nameBytes = MsgBase.EncodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len]; sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); ByteArray byteArray = new ByteArray(sendBytes); int count = 0; lock (writeQueue) { writeQueue.Enqueue(byteArray); count = writeQueue.Count; } if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } socket.Send(sendBytes); }
public static void Send(MsgBase msg) { if (socket == null || !socket.Connected) { return; } byte[] nameBytes = MsgBase.EcodeName(msg); byte[] bodyBytes = MsgBase.Encode(msg); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(nameBytes)}"); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(bodyBytes)}"); int len = nameBytes.Length + bodyBytes.Length; byte[] sendBytes = new byte[2 + len];//增加总消息长度 //组装长度 sendBytes[0] = (byte)(len % 256); sendBytes[1] = (byte)(len / 256); //组装名字 Array.Copy(nameBytes, 0, sendBytes, 2, nameBytes.Length); //组装消息体 Array.Copy(bodyBytes, 0, sendBytes, 2 + nameBytes.Length, bodyBytes.Length); Debug.Log($"[Send] {System.Text.Encoding.UTF8.GetString(sendBytes)}"); //写入队列 ByteArray ba = new ByteArray(sendBytes); int count = 0; lock (writeQueue) { writeQueue.Enqueue(ba); count = writeQueue.Count; } if (count == 1) { socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket); } }