Python 如何通过套接字发送分割的音频文件?
我正在尝试将audio.ogg从客户端发送到服务器。我用base64编码,然后用zlib压缩。出于几个原因,我的目标是在“windows”中发送340字节大小的音频 客户端似乎工作正常,但我的服务器端只接收到前340个字节并停止。任何帮助都将不胜感激。谢谢 客户Python 如何通过套接字发送分割的音频文件?,python,sockets,Python,Sockets,我正在尝试将audio.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
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个字节后,您的代码正在等待新连接,但您的客户端正在同一连接上发送文件的剩余部分。该死,就是这样!只有当我有多个客户端时,在循环中接受连接才有用,对吗。我去掉了try/except,将accept放在循环之外,现在它工作得很好。谢谢你,Aleesandro!