我正在编写一个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失败
目前没有回答
相关问题 更多 >
编程相关推荐