2013-11-10 59 views
0

解决方案(某种方式): 我刚添加了一次睡眠,虽然一半的文件仍然损坏,但至少现在我转移了所有1.19 MB 。 完全删除base64似乎是答案:DWav文件传输插座

我想创建一个脚本,用户可以转让一个wav文件。 这是我目前的代码,客户端和服务器端。问题是 我的数据在最后被破坏。

此外,当我看到所有的数据传输我关闭服务器 Ps。我说那个文件是不好名称的变量,但我现在只在测试过程中使用它

在此先感谢。

客户端:

class SockThread(QtCore.QThread): 
    def create_r(self, filename): 
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     self.filename = filename 
    def run(self): 
     self.sock.connect(("127.0.0.1", 8000)) 
     wf = open(self.filename, 'rb') 
     print("OK") 
     for line in wf: 

      self.sock.send(base64.b64encode(line)) 

     wf.close() 
     print("OK") 

服务器端:

file = open("sample.wav", "wb") 
self.connection = True 
while self.connection is True: 
try: 
    data = self.socket.recv(1024) 
    print(data) 
    file.write(base64.b64decode(data)) 
except: 
    break 

回答

0

我认为你需要阅读从插座上整个文件,然后b64decode它,在1024字节的块做不得产生相同的结果。

+0

这没有奏效,该文件不能以这种方式播放。 –