Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过套接字发送分割的音频文件?_Python_Sockets - Fatal编程技术网

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

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

我正在尝试将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, 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!