X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=doc%2Fprotocol.txt;h=4c8ddd5003e29a4a93ac50b98c14321a5af084f7;hb=65a6a316d081d3951438bbbcfce74c9c65db407a;hp=82dca59bfc617da485c66eab75867a4ca856a443;hpb=cab426ffa3feaf1a36b35342b68adce83456c00d;p=minetest.git diff --git a/doc/protocol.txt b/doc/protocol.txt index 82dca59bf..4c8ddd500 100644 --- a/doc/protocol.txt +++ b/doc/protocol.txt @@ -1,4 +1,4 @@ -Minetest-c55 protocol (incomplete, early draft): +Minetest protocol (incomplete, early draft): Updated 2011-06-18 A custom protocol over UDP. @@ -59,14 +59,52 @@ function check_if_minetestserver_up($host, $port) { # We got a reply! read the peer id from it. $peer_id = substr($buf, 9, 2); - + # Disconnect $buf = "\x4f\x45\x74\x03".$peer_id."\x00\x00\x03"; socket_sendto($socket, $buf, strlen($buf), 0, $host, $port); socket_close($socket); - + return true; } return false; } +- Here's a Python script for checking if a minetest server is up, confirmed working + +#!/usr/bin/env python3 +import sys, time, socket + +address = "" +port = 30000 +if len(sys.argv) <= 1: + print("Usage: %s
" % sys.argv[0]) + exit() +if ":" in sys.argv[1]: + address = sys.argv[1].split(":")[0] + try: + port = int(sys.argv[1].split(":")[1]) + except ValueError: + print("Please specify a valid port") + exit() +else: + address = sys.argv[1] + +try: + start = time.time() + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.settimeout(2.0) + buf = b"\x4f\x45\x74\x03\x00\x00\x00\x01" + sock.sendto(buf, (address, port)) + data, addr = sock.recvfrom(1000) + if data: + peer_id = data[12:14] + buf = b"\x4f\x45\x74\x03" + peer_id + b"\x00\x00\x03" + sock.sendto(buf, (address, port)) + sock.close() + end = time.time() + print("%s is up (%0.5fms)" % (sys.argv[1], end - start)) + else: + print("%s seems to be down " % sys.argv[1]) +except Exception as err: + print("%s seems to be down (%s) " % (sys.argv[1], str(err)))