2017-01-09 1 views
0

다른 질문과 그 해결책을 찾았습니다. 코드를 보내야합니다. 그러나 이것이 인코딩되었는지 여부에 관계없이 여전히이 오류가 발생합니다. 어떤 아이디어 ??? 주석 처리 된 행은 의도 한대로 기능을 수행하도록 제거 된 행입니다. 나는 감각을 만들어이 너무 희망이 질문에 새로운 해요. (나는 버전 3.6를 사용하고 있습니다)Python sendto 오류 TypeError : 바이트가 아닌 str이어야합니다.

Host = servershost 
Port = 12345 

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind((Host, Port)) 
s.setblocking(0) 

rT = threading.Thread(target=receiving, args=("RecvThread", s)) 
rT.start() 

message = input(Username + ": ") 
#s.sendto(message) 
while message != 'q': 
    if message != '': 
     s.sendto(Username + message.encode('utf-8'), server) 
    #tlock.aquire() 
    message = input(Username + ': ') 
    tlock.release() 
    time.sleep(0.2) 

shutdown = True 
rT.Join() 
s.close() 
+0

는'Username' 나에게 바이트처럼 보이지 않는 : 결과가 bytes 객체 그래서

그래서, 단지 두 문자열을 인코딩합니다. –

+0

전체 스택 트레이스주세요 ... (가장 최근 통화 마지막) 장 - FrançoisFabre 역 추적 @ –

+0

: 파일 "C : \ 사용자 \ pov7230 바탕 화면 \ 메모장 \ ++ \ realchat.py", 라인 (77) s.sendto에서 (사용자 이름 + message.encode ('utf-8'), 서버) TypeError : 바이트가 아닌 str이어야합니다. – Ace

답변

0

socket 객체가 bytes (이진) 개체,하지 (적어도 파이썬 3) 문자열이 필요합니다.

s.sendto((Username + message).encode('utf-8'), server) 
관련 문제