diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-11-16 14:01:40 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-11-16 14:01:40 +0000 |
| commit | 42553448f7fb8d3d9aaa615facaf872b5d54e229 (patch) | |
| tree | 191391141170bb2a4af1557f21f874f636b7db10 /scripts/tw_api.py | |
| parent | e27e2d8b2a65e1476b275bd35a1148253434f8f3 (diff) | |
| download | zcatch-42553448f7fb8d3d9aaa615facaf872b5d54e229.tar.gz zcatch-42553448f7fb8d3d9aaa615facaf872b5d54e229.zip | |
fixed so it handles multiple packets from the masters
Diffstat (limited to 'scripts/tw_api.py')
| -rw-r--r-- | scripts/tw_api.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/scripts/tw_api.py b/scripts/tw_api.py index 6ef0cc6a..8077e3ee 100644 --- a/scripts/tw_api.py +++ b/scripts/tw_api.py @@ -61,17 +61,23 @@ def get_servers(address): sock = socket(AF_INET, SOCK_DGRAM) sock.settimeout(1.5) sock.sendto("\x20\x00\x00\x00\x00\x00\xff\xff\xff\xffreqt", (address, master_port)) - - data, addr = sock.recvfrom(1024) - sock.close() - data = data[14:] - num_servers = len(data) / 6 - num_players = 0 + + while 1: + data, addr = sock.recvfrom(1024) + + data = data[14:] + num_servers = len(data) / 6 - for n in range(0, num_servers): - ip = ".".join(map(str, map(ord, data[n*6:n*6+4]))) - port = ord(data[n*6+5]) * 256 + ord(data[n*6+4]) - servers += [[ip, port]] + for n in range(0, num_servers): + ip = ".".join(map(str, map(ord, data[n*6:n*6+4]))) + port = ord(data[n*6+5]) * 256 + ord(data[n*6+4]) + servers += [[ip, port]] + + # and we are done + if num_servers < 128: + break + + sock.close() return servers except: |