webForumDet fria alternativet

kommunikation via UDP

.NET

1 svar · 237 visningar · startad av Debeo

Medlem sedan maj 200340 inlägg
Frågan#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;
}
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)