处理8个字节时,如何解决“解压缩需要8个字节的缓冲区”?

时间:2019-09-16 07:21:53

标签: python-3.x sockets struct binary

因此,我编写了一个客户端,该客户端连接到用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例外处理

0 个答案:

没有答案