kommunikation via UDP

.NET

1 svar · 251 visningar · startad av Debeo

Medlem sedan maj 200340 inlägg
Trådstart#1

Problemet är följande:

Ja har en CounterStrikeserver som ja skulle vilja presenterar lite information från på en websida. Det skall gå genom att skicka kommandon till servern via udp med hjälp av klassen socket. Få tillbaka information från servern och spara ner denna i tex en datatable. Frågan är bara hur detta skall gå till skulle behöva lite hjälp att komma igång.

Medlem sedan apr. 20012 266 inlägg
#2

Här har du en fungerande kod, dock är den kanske inte omptimal då det var ett tag sedan jag arbetade med den. Hoppas den kan hjälpa!

byte[] cmd = { 255, 255, 255, 255, 105, 110, 102, 111, 0 };

System.Text.ASCIIEncoding encode = new System.Text.ASCIIEncoding();
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
socket.Connect(new IPEndPoint(Dns.Resolve(hostname).AddressList[0], port));
socket.Send(cmd);
byte[] buffer = new Byte[1024];
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 0);
bool done = true;

while(done)
{
	int pos, offset;
	socket.Receive(buffer);
	socket.Close();
	pos	= 5;
	offset = 6;

	while (buffer[offset] != 0) offset++;
	_name = encode.GetString(buffer, pos, offset-pos);
	pos = offset;
	offset++;
	while (buffer[offset] != 0) offset++;
	_map = encode.GetString(buffer, pos, offset-pos);
	pos = offset;
	offset++;
	while (buffer[offset] != 0) offset++;
	// game
	pos = offset;
	offset++;
	while (buffer[offset] != 0) offset++;
	_game = encode.GetString(buffer, pos, offset-pos);
	pos = offset;
	offset++;
	while (buffer[offset] != 0) offset++;
	pos++;
	_cplayers = Int32.Parse(buffer[pos].ToString());
	_mplayers = Int32.Parse(buffer[pos+1].ToString());
	done = false;
}
254 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)