/** * A connectionless packet has four leading 0xff characters to distinguish * it from a game channel. Clients that are in the game can still send * connectionless packets. It is used also by rcon commands. */ public static void SV_ConnectionlessPacket() { string s; string c; MSG.BeginReading(Globals.net_message); MSG.ReadLong(Globals.net_message); // skip the -1 marker s = MSG.ReadStringLine(Globals.net_message); Cmd.TokenizeString(s.ToCharArray(), false); c = Cmd.Argv(0); //for debugging purposes //Com.Printf("Packet " + NET.AdrToString(Netchan.net_from) + " : " + c + "\n"); //Com.Printf(Lib.hexDump(net_message.data, 64, false) + "\n"); if (0 == Lib.strcmp(c, "ping")) { SV_MAIN.SVC_Ping(); } else if (0 == Lib.strcmp(c, "ack")) { SV_MAIN.SVC_Ack(); } else if (0 == Lib.strcmp(c, "status")) { SV_MAIN.SVC_Status(); } else if (0 == Lib.strcmp(c, "info")) { SV_MAIN.SVC_Info(); } else if (0 == Lib.strcmp(c, "getchallenge")) { SV_MAIN.SVC_GetChallenge(); } else if (0 == Lib.strcmp(c, "connect")) { SV_MAIN.SVC_DirectConnect(); } else if (0 == Lib.strcmp(c, "rcon")) { SV_MAIN.SVC_RemoteCommand(); } else { Com.Printf("bad connectionless packet from " + NET.AdrToString(Globals.net_from) + "\n"); Com.Printf("[" + s + "]\n"); Com.Printf("" + Lib.hexDump(Globals.net_message.data, 128, false)); } }
public static void SV_ConnectionlessPacket( ) { String s; String c; MSG.BeginReading(Globals.net_message); MSG.ReadLong(Globals.net_message); s = MSG.ReadStringLine(Globals.net_message); Cmd.TokenizeString(s.ToCharArray(), false); c = Cmd.Argv(0); if (0 == Lib.Strcmp(c, "ping")) { SVC_Ping(); } else if (0 == Lib.Strcmp(c, "ack")) { SVC_Ack(); } else if (0 == Lib.Strcmp(c, "status")) { SVC_Status(); } else if (0 == Lib.Strcmp(c, "info")) { SVC_Info(); } else if (0 == Lib.Strcmp(c, "getchallenge")) { SVC_GetChallenge(); } else if (0 == Lib.Strcmp(c, "connect")) { SVC_DirectConnect(); } else if (0 == Lib.Strcmp(c, "rcon")) { SVC_RemoteCommand(); } else { Com.Printf("bad connectionless packet from " + NET.AdrToString(Globals.net_from) + "\\n"); Com.Printf("[" + s + "]\\n"); Com.Printf("" + Lib.HexDump(Globals.net_message.data, 128, false)); } }