Я пишу скрипт на 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