我正在编写一个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()
然后是playFile函数
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 \ InfoCOMM.py”,第73行,在 clientSock,clientAddr = serverSock.accept() 接受文件“ C:\ Users \ cdunn \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ socket.py”,行212 fd,addr = self._accept() OSError:[WinError 10093]应用程序未调用WSAStartup,或者WSAStartup失败