Я получу мяч:
import socket
import struct
username = "username_value"
verification_key = "verification_key"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # boilerplate
s.connect(("example.com", 1234)) # adjust accordingly
# now for the packet
# note that the String type is specified as having a length of 64, we'll pad that
packet = ""
packet += struct.pack("B", 1) # packet type
packet += struct.pack("B", 7) # protocol version
packet += "%-64s" % username # magic!
packet += "%-64s" % verification_key
packet += struct.pack("B", 0) # that unused byte, assuming a NULL byte here
# send what we've crafted
s.send(packet)
"% -20s" могут быть странными для вас, если вы никогда не использовали строки форматирования.По существу ..
print "%s" % 5
.. будет выводить 5 ..
print "%10s" % 5
.. будет дополнять вывод, чтобы быть точно 10 символов в ширину.Но он дополняет их с правой стороны, мы хотим, чтобы этот отступ был слева - следовательно, -
..
print "%-10s" % s, "<this will be 9 spaces away from the '5'>"
.. поэкспериментируйте с ним.
Если что-тонеясно, дайте мне знать.Мне нравится то, что ты делаешь, напоминает мне о моем старом проекте.За исключением того, что у меня не было аккуратной спецификации протокола, как у вас, счастливчик.;)