protected void SystemCmds(SocketUser user, Data data) { byte cmd = data.Buffer[0]; data.Buffer = BufferUtils.RemoveFront(BufferUtils.Remove.CMD, data.Buffer); switch (cmd) { case 0x02: // udp enable //Logger.Log("{0}: Udp enabled", user.SessionToken); int port = BitConverter.ToInt32(data.Buffer, 0); user.EnableUdp(port); user.Send(0xff, new byte[] { 0x02 }, Protocal.Udp); UserUdpEnabled(user); break; case 0x03: // ping bool pingBack = BitConverter.ToBoolean(data.Buffer, 0); if (pingBack) { user.Send(0xff, BufferUtils.AddFirst(0x03, BitConverter.GetBytes(false)), data.Type); } UserPinged(user, data.Type, pingBack); break; default: Logger.LogError("Received invalid system command: {0}", cmd); break; } }
private void Ping(Protocal type) { if (type == Protocal.Udp && !udpStarted) { return; } // sending "true" to tell server to ping back. Send(255, BufferUtils.AddFirst(0x03, BitConverter.GetBytes(true)), type); }
private void SystemCmds(Data data) { byte cmd = data.Buffer[0]; data.Buffer = BufferUtils.RemoveFront(BufferUtils.Remove.CMD, data.Buffer); switch (cmd) { case 0x01: // connected. if (data.Buffer[0] == 0x01) { UdpID = BitConverter.ToUInt16(data.Buffer, 1); StartTcpPing(); if (OnConnectSuccess != null) { OnConnectSuccess(); } } else { if (OnConnectFailed != null) { OnConnectFailed(); } Close(); } break; case 0x02: // udp enabled udpConnected = true; if (OnUdpEnabled != null) { OnUdpEnabled(); } break; case 0x03: // ping. bool pingBack = BitConverter.ToBoolean(data.Buffer, 0); if (pingBack) { Send(0xff, BufferUtils.AddFirst(0x03, BitConverter.GetBytes(false)), data.Type); } break; case 0x04: // server closed. if (OnServerStoped != null) { OnServerStoped(); } Close(); break; default: SafeDebug.LogError("Received invalid system command: " + cmd); break; } }
public void UdpConnect() { udpClient = new UdpClient(); udpClient.Connect(Host, UdpPort); endPoint = udpClient.Client.RemoteEndPoint as IPEndPoint; UdpLocalPort = ((IPEndPoint)udpClient.Client.LocalEndPoint).Port; SafeDebug.Log(string.Format("UDP client starting: {0}, {1}, {2}", UdpLocalPort, endPoint.Port, endPoint.Address.ToString())); udpStarted = true; BegineReceiveUDP(); Send(0xff, BufferUtils.AddFirst(0x02, BitConverter.GetBytes(UdpLocalPort)), Protocal.Udp); StartUdpPing(); }
public void Send(byte cmd, byte[] data, Protocal type = Protocal.Tcp) { Send(BufferUtils.AddFirst(cmd, data), type); }
private byte[] InsertCommand(byte command, byte[] data) { return(BufferUtils.AddFirst(command, data)); }