通过套接字发送wav文件

时间:2016-11-20 16:36:46

标签: python python-2.7 sockets wav wave

我正在尝试通过套接字发送wav文件。

我收到错误:

TypeError: must be string or buffer, not instance
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'rb')
my_socket.sendall(waveFile)

2 个答案:

答案 0 :(得分:2)

wave没有为您提供常规文件I / O.它用于获取媒体属性。

你可以使用普通的开/关,读/写。

<强> sender.py:

import socket

(HOST,PORT)=('localhost',19123)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect((HOST,PORT))

with open('input', 'rb') as f:
  for l in f: s.sendall(l)
s.close()

<强> receiver.py:

import socket

(HOST,PORT) = ('localhost',19123)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT)); s.listen(1); conn, addr = s.accept()

with open('output','wb') as f:
  while True:
    l = conn.recv(1024)
    if not l: break
    f.write(l)
s.close()

答案 1 :(得分:1)

尝试socket.sendfile(file, offset=0, count=None)

  

使用高性能os.sendfile ...

发送文件,直到达到EOF

当你发送原始二进制数据时,你不想用with open(WAVE_OUTPUT_FILENAME, 'rb') as wave_file: my_socket.sendfile(wave_file) 打开文件。

所以你会这样做:

{{1}}