因此,我编写了一个客户端,该客户端连接到用go编写的服务器。我发送一个8字节的数据包,然后随着响应的到来,它通过我为解压缩而构建的函数传递。那就是错误的来源。
Error:
line 38, in binary_response
tag, code = struct.unpack('!I I ', response[:8])
struct.error: unpack requires a buffer of 8 bytes
我试图取出该函数并在while循环中执行所有操作,但存在相同的错误。我对python真的很陌生,所以如果没有太多麻烦,请指出正确的方向。我尝试调试它,但是现在运气不错。
import socket
import struct
import textwrap
from time import sleep
TCP_IP = '127.0.0.1'
TCP_PORT = 4200
TAB_1 = '\t - '
TAB_2 = '\t\t - '
TAB_3 = '\t\t\t - '
TAB_4 = '\t\t\t\t - '
DATA_TAB_1 = '\t '
DATA_TAB_2 = '\t\t '
DATA_TAB_3 = '\t\t\t '
DATA_TAB_4 = '\t\t\t\t '
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 4200))
packet = struct.pack('!ii', 10, 4)
s.send(packet)
while True:
response = s.recv(65535)
bny = binary_response(response)
print(TAB_1 + 'Binary Response Segment:')
print('Response Code: ', bny[1])
print('Client ID: ', bny[0])
print('Message: ', response.decode('latin-1'))
# Unpack binary_response
def binary_response(response):
tag, code = struct.unpack('!I I ', response[:8])
return tag, code
main()
这给了我期望的输出,只是消除了这些出现的错误。我真的很想了解,可能需要使用idk例外处理