소켓을 통해 wav 파일을 보내려고합니다.소켓을 통해 wav 파일 보내기
TypeError: must be string or buffer, not instance
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'rb')
my_socket.sendall(waveFile)
소켓을 통해 wav 파일을 보내려고합니다.소켓을 통해 wav 파일 보내기
TypeError: must be string or buffer, not instance
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'rb')
my_socket.sendall(waveFile)
당신에게 일반 파일 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()
클라이언트 코드 : 의 데이터 상태 : + = 데이터 데이터 = client_socket.recv ALLDATA는 (1024) 음성 = 열기 ("voice.p는" 'WB') voice.write (ALLDATA) ' 나에게 오류가 발생합니다 -wave.Error : 파일이 RIFF id로 시작하지 않습니다. – user4719989
'send'를'sendall'으로 변경했습니다. 전자는 모든 바이트를 전송할 수있는 것은 아니며 나머지 바이트로 다시 시도해야합니다. 후자는 모든 바이트를 보냅니다. 다시 시도 할 필요가 없습니다. – blackpen
클라이언트 측에서는 'alldata + = data;'와 같은 문자열 연산을하지 마십시오. 바이트 배열에서 안전하다고는 생각하지 않습니다. – blackpen
이 socket.sendfile(file, offset=0, count=None)
을 시도해보십시오
가 나는 오류가 발생합니다.
Send a file until EOF is reached by using high-performance
os.sendfile
…
는 그리고 당신은 당신이 원시 이진 데이터를 전송하는대로 wave.open(...)
으로 파일을 열 싶지 않아요.
wave
with open(WAVE_OUTPUT_FILENAME, 'rb') as wave_file:
my_socket.sendfile(wave_file)
오류가 발생했습니다. AttributeError : '_socketobject'객체에 'sendfile'속성이 없습니다. – user4719989
나는 창을 사용하고 있습니다. – user4719989
socket.sendfile()이 (가) Python 2.7에서 종료되지 않습니다. – blackpen
코드, my_socket.send() wavefile = 개방 (...). – user4719989