以确定大小的块将字节从客户端传输到服务器的最佳方式是什么
现在我正在用base64编码一个音频文件,然后用zlib压缩它并通过套接字连接发送。我的问题是试图在服务器中重建原始文件
我使用一个空字符串进行了思考和测试,该字符串与服务器正在接收的所有字节一起添加。看起来还行,但一开始的“b”被保留,这使得它无法恢复原始音频文件
我刚刚尝试对服务器接收到的每组字符串的字节进行解码,并从开头删除“b”,从结尾删除“b”(数据[2:-1]),但这从原始字符串中删除了几个字符
客户端:
with open(arquivo, 'rb') as input_file:
abc = base64.b64encode(input_file.read())
try1 = zlib.compress(abc)
n = 338
result = [try1[i:i+n] for i in range(0, len(try1), n)]
HOST = ''
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect((HOST,PORT))
i = 0
for item in result:
item = str(item)
print(item)
s.send(item.encode())
i += 1
print('i = ', i)
time.sleep(2)
服务器端:
HOST = ''
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
print('Servidor Inicializado')
s.bind((HOST,PORT))
s.listen()
audiofile = ''
i = 0
conn, addr = s.accept()
while True:
data1 = conn.recv(2048)
print('data1 undecoded = ', data1)
text = data1.decode()
data = text[2:-1]
print('data EDITADO = ', data)
audiofile = audiofile + data
i += 1
print('i = ', i)
print('audiofile = ', audiofile)
if not data:
print('No Data Received!')
print('Recebeu tratado :', data)
不知道如何进行,任何帮助都将不胜感激。谢谢
下面是一个如何使用套接字发送和接收数据的示例
通常我会腌制它们。如果您不熟悉pickle,它将用于序列化python对象以存储或通过连接(如套接字)发送
客户端:
服务器端:
免责声明:我没有测试任何一个,也不知道try1对象是什么,或者你想用它做什么。这只是从a点到b点
相关问题 更多 >
编程相关推荐