PyAudio与套接字结合导致WinError 10093

2024-09-27 00:14:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本,从服务器上获取一个文件,并用pyaudio库播放它。我从服务器发送一个tcp命令,触发到服务器的FTP连接,然后播放它。我保持一个while循环运行,这样就可以根据需要重复这个过程,直到它接收到另一个tcp命令为止。但是,在两个播放实例之后,我得到了错误:OSError:[WinError 10093]要么应用程序没有调用WSAStartup,要么WSAStartup失败

我有两个功能:ftpFetcher和playFile。每一个看起来都很好。在另一个文件中,我可以连续调用playFile函数。去掉playFile函数,我就可以随意调用ftpFetcher了。你知道吗

首先,ftpFetcher

def ftpFetcher(IPaddress, filename):
    ftp = FTP(IPaddress, "root", "pass")
    print('FTP Connected!')
    with open(filename, 'wb') as f:
        ftp.retrbinary('RETR ' + filename, f.write)
        f.close()
    print('Transfer Complete!')
    ftp.close()

然后,播放文件函数

def playFile(filename):
    wavFile = wave.open(filename, 'rb')
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wavFile.getsampwidth()),
                    channels=wavFile.getnchannels(),
                    rate=wavFile.getframerate(),
                    output=True)
    data = wavFile.readframes(audioChunk)

    while data != b'':
        stream.write(data)
        data = wavFile.readframes(audioChunk)
    print('Play finished!')
    stream.stop_stream()
    stream.close()
    wavFile.close()
    p.terminate()

这就是引起麻烦的回路

    while loop == 0:

        print('Waiting for command...')

        clientSock, clientAddr = serverSock.accept()
        print('connection from: ', clientAddr)
        data = clientSock.recv(64)
        print('data: ', data.decode())


        if data.decode() == 'play':
            ftpFetcher(clientAddr[0], filename)
            playFile(filename)


        elif data.decode() == 'quit':
            print('Exiting Program!')
            loop = 1

再说一次,我运行这个并发送播放消息一次,就没事了。两次之后,它就很好地通过了,但我最终得到了一个完整的错误:

文件“C:\Users\cdunn\Documents\InfoCOMM\信息通信.py“,第73行,in clientSock,clientAddr=服务器sock.accept() 文件“C:\Users\cdunn\AppData\Local\Programs\Python\Python37\lib\套筒.py“,第212行,接受” fd,addr=self.\u accept() OSError:[WinError 10093]应用程序没有调用WSAStartup,或者WSAStartup失败


Tags: 文件函数服务器closedatastreamftpfilename

热门问题