我正在尝试将音频(.ogg)从客户端发送到一台服务器。我使用base64对其进行编码,然后使用zlib对其进行压缩。由于几个原因,我的目标是在“ windows”中以340字节的大小发送此音频。
客户端方面似乎工作正常,但我的服务器端仅接收前340个字节并停止。任何帮助将不胜感激。谢谢!
客户
import socket
import time
import datetime as dt
import base64
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)
服务器端
import sqlite3
import socket
import time
import datetime as dt
import base64
import zlib
import pandas as pd
from collections import deque
HOST = ''
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST,PORT))
s.listen()
audiofile = ''
i = 0
try:
while True:
conn, addr = s.accept()
rect = str(dt.datetime.now())
print('Conectado com', addr[0],':', str(addr[1]), ' recebido às ', rect)
data1 = conn.recv(2048)
data = data1.decode()
print('data = ', data)
audiofile = audiofile + data
i += 1
print('i = ', i)
print('audiofile = ', audiofile)
if not data:
print('No Data Received!')
except:
print('No data received...')
conn, addr = s.accept()
应该在while循环之外。在收到前340个字节后,您的代码正在等待新的连接,但是您的客户端正在通过同一连接发送其余文件。