2013-11-10 60 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

這沒有奏效,該文件不能以這種方式播放。 –