0

クライアント/サーバー スレッド チャットを少し行っていますが、問題があります。入力中に一方の側がメッセージを受信すると、入力されているメッセージが壊れます。

ここに画像の説明を入力

スレッドコードは次のとおりです。

import threading
import socket
class sendTread(threading.Thread):
    def __init__(self,soc):
        threading.Thread.__init__(self,name='sender')
        self.s=soc
    def run(self):
        while True:
            self.s.send(bytes(str(input('>>> ')), 'UTF-8'))
            print('sent.')
class recvTread(threading.Thread):
    def __init__(self,soc):
        threading.Thread.__init__(self,name='recver')
        self.s=soc
    def run(self):
        while True:
            data=self.s.recv(1024)
            print('\nrecv:',str(data)[2:len(str(data))-1],end="\n>>> ")

なぜそれが起こるのか理解していますが、それを修正する方法がわかりません。助けと提案をいただければ幸いです:)

4

1 に答える 1

0

この問題は、同時発生の問題としてアプローチする必要があります。あなたの場合、コンソールは共有リソースであり、送信者によってまだ「取得」されている間に受信者のスレッドがそれを使用しているということが起こっています。

print ステートメントを保護するロックを追加できます。詳細については、http: //docs.python.org/2/library/threading.html#lock-objectsを参照してください。

于 2013-09-05T11:31:03.263 に答える