0

解決策(ある意味で):半分のファイルがまだ破損しているにもかかわらず、 atime sleep を追加しましたが、少なくとも今はすべての 1.19 mb を転送しました。base64を完全に削除することが答えのようです:D

ユーザーが 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
4

1 に答える 1

0

b64decodeソケットからファイル全体を読み取ってから、 1024 バイトのチャンクでそれを行うと、同じ結果が得られない可能性があると思います。

于 2013-11-10T09:17:58.643 に答える