如何通过套接字发送分割的音频文件?

问题描述 投票:-1回答:1

我正在尝试将音频(.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...')
python sockets
1个回答
0
投票

conn, addr = s.accept()应该在while循环之外。在收到前340个字节后,您的代码正在等待新的连接,但是您的客户端正在通过同一连接发送其余文件。

© www.soinside.com 2019 - 2024. All rights reserved.