2013-09-05 4 views
0

약간의 클라이언트 \ 서버 스레딩 채팅을하고 있는데 문제가 발생했습니다. 입력 중에 메시지 중 하나가 메시지를 수신하는 경우 여기에 입력 한 메시지가 깨졌습니다. 그림 여기메시지 수신시 메시지가 입력되면

enter image description here

에 대한 이미지는 스레딩 코드 :

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>>> ")

나는 그런 일이 왜 이해하지만 난이 아무 생각이 그것을 해결하기 위해 내가 행복이 얼마나,에 대한 도움과 제안 :

답변

0

동시 문제로 문제에 접근해야합니다. 귀하의 경우, 콘솔은 공유 리소스이며 무슨 일이 일어나는지는 수신자의 스레드가 송신자에 의해 "촬영 중"인 동안 스레드를 사용하고 있다는 것입니다.

당신은 인쇄 문을 보호 잠금을 추가 할 수 있습니다

, 당신은 여기에 대한 세부 정보를 찾을 수 있습니다 http://docs.python.org/2/library/threading.html#lock-objects

관련 문제