首页 新闻 会员 周边

[python] struck 模块 解压数字后得到多个元组 求大佬解释

0
悬赏园豆:5 [已关闭问题] 关闭于 2019-06-02 14:25

struck 经过unpack 后得到多个元组

正常来说,struck 压缩一个数字成某个固定长度字节,应该只是得到这个数字

import struct

res = b'123344443222'
lens = len(res) # 12
a = struct.pack('i', lens) # b'\x0c\x00\x00\x00'
b = struct.unpack('i', a)
print(b) # (12,)

我在写一个注册程序时候得到这样一个问题

--- 服务端

from socket import *
import struct, json

ip_port = ('127.0.0.1', 1688)
server = socket()
server.bind(ip_port)
server.listen()

client, addr = server.accept()

while True:
json_pack = client.recv(4) # b'0\x00\x00\x00'
recv_data = struct.unpack('i', json_pack)
print(recv_data)
# info = client.recv(recv_data) # b'{"usr": "lxx", "pwd": "123", "wtfk": "register"}'
# print(info)

--- 客户端
from socket import *
import os, time, json, struct

ip_port = ('127.0.0.1', 1688)
client = socket()

for i in range(3):
try:
client.connect(ip_port)
print('%s 连接 服务器成功' % (os.getpid()))
break
except ConnectionRefusedError:
print('%s 正在连接' % (os.getpid()))

else:
# time.sleep(1)
print('%s 连接服务器失败' % (os.getpid()))

def register():
user = input('注册用户名>>> ').strip()
pwd = input('注册密码>>> ').strip()

info = {'usr': user, 'pwd': pwd, 'wtfk': 'register'}
json_data = json.dumps(info).encode('utf-8')
lens = len(json_data)
json_pack = struct.pack('i', lens)
print(json_pack) # b'0\x00\x00\x00'
print(json_data) # b'{"usr": "lxx", "pwd": "123", "wtfk": "register"}'

client.send(json_pack)
client.send(json_data)

def login():
user = input('登录用户名>>> ').strip()
pwd = input('登录密码>>> ').strip()

def run():
fun_dic = {
'1': register,
'2': login
}

while True:
    choice = input('请选择功能 1.注册 2.登录 q:退出').strip()
    if choice == 'q': break
    if choice not in fun_dic: print('无此功能,请重试');continue
    fun_dic[choice]()

run()

当我启用注册功能地时候,服务端那里会反馈多个元组

先运行服务端,然后运行客户端后地输出
2936 连接 服务器成功
请选择功能 1.注册 2.登录 q:退出1
注册用户名>>> lxx
注册密码>>> 123
b'0\x00\x00\x00'
b'{"usr": "lxx", "pwd": "123", "wtfk": "register"}'
请选择功能 1.注册 2.登录 q:退出

服务端地输出

(48,)
(1937056379,)
(540680818,)
(2021157922,)
(572533794,)
(577009520,)
(824320058,)
(740438834,)
(1953964576,)
(975334246,)
(1701978656,)
(1953720679,)
(2099409509,)

cjw1219的主页 cjw1219 | 初学一级 | 园豆:193
提问于:2019-06-02 12:03
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册