2013-09-24 3 views
0

클라이언트/서버에 대한 공식 트위스티드 examples을 따르고 있습니다. 클라이언트에서 서버로 텍스트를 보내려면 LineReceiver.sendLine()을 사용하고 있습니다. 이 코드는 작동합니다 :텍스트가 뒤틀림으로 전송되지 않습니다.

def connectionMade(self): 
    self.sendLine("Hello, world!") 

그리고 내 서버 쪽에서 볼 수 있습니다. 나는 이런 식으로 뭔가를 추가한다면 :

def connectionMade(self): 
    while self.running: 
     command = raw_input(">>") 
     if command=="disconnect": 
      self.running = False 
     else: 
      print "sending..." 
      self.sendLine(command) 
      print "sent." 
    self.sendLine("Hello, world!") 

나는 '... 전송'를 모두 볼 수 있으며 '를 보내',하지만 아무것도 더. 클라이언트가 데이터를 보내는 것처럼 보일지라도 서버는 아무 것도 수신하지 않습니다. '연결 해제'을 입력하면 '안녕하세요, 세계를 포함하여 모든 메일이 한 번에 전송됩니다. '

내 질문 : 실제 전송은 어디에서 발생합니까? 그리고 위와 같은 것을하기 위해 무엇을해야합니까?

+0

@ Jean-PaulCalderone 중복이더라도 사용 가능한 해결책이 없습니다. – alex

+0

예, 있습니다. 수락 된 대답을 확인하십시오. 그 답을 이해할 수 없다면 무엇이 문제인지 물어보십시오. – Glyph

답변

0

LineReceiver에는 줄 끝 구분 기호 변수가 있습니다. 기본적으로 '\r\n'입니다. 따라서 프로토콜은 실제로 소켓에 데이터를 쓰기 전에 분리 문자를 볼 때까지 대기합니다.

raw_input()은 프로토콜에서 구분 기호를 볼 수 없도록 입력에서 후행 새 줄을 제거합니다.

따라서 명령 다음에 '\ r \ n'줄을 보내거나 command 변수에 추가하십시오.

+0

합리적인 것처럼 보이지만 불행히도 작동하지 않습니다. – alex

관련 문제