2012-11-02 2 views
0

질문, 그래서 지금 패킷에 \ n 보내야하지만 파이썬은 EOL로 취급합니다. 어떻게 원시 텍스트와 패킷의 일부로 \ n 취급하도록 말할 수 있습니까? 때 그 단지에 로그온 \ n n을 파이썬에서 원시 텍스트로 처리 하시겠습니까?

socket.sendall("'LOGON\n ^ SyntaxError: EOL while scanning string literal

logcom = "LOGON\n Protocol-Version: 2.0\n App-type: Windows x86\n Operator: PC_CLIENT\n name: " + pal_user + "\n capabilities: 4\n"

나는 하나 개의 패킷에 모두 전송해야하지만 패킷이 여러 줄이있는 경우는 EOL로 \ n을 취급 있지만

오류^

+2

문제를 조금 더 설명했거나 코드를 게시 한 경우 도움이 될 것입니다. tcp/udp 소켓이나 RAW를 사용하고 있습니까? – Protagonist

+0

메신저는 TCP 소켓을 사용하며 패킷의 첫 번째 부분은 LOGON \ n이지만 \ n을 코드의 일부로 취급하지만 패킷으로 보내야합니다. 'logcom = "LOGON \ n 프로토콜 기반 프로토콜 버전 : 2.0 \ n 응용 형 : 윈도우 86 \ n을 운영자 : PC_CLIENT \ 없음 이름 : "+ pal_user +"\ n 기능 : 4 \ n " ' – user1792652

+0

난 당신이'소켓을 사용하는 가정입니다. sendall ('LOGON \ n')', 맞습니까? 그렇다면,'sendall' 함수는'\ n'과 같은 공백 문자와 함께 전체 문자열을있는 그대로 전송합니다. – Protagonist

답변

1

'\ n'에 '\'를 전송해야하는 경우 문자를 이스케이프하면됩니다. 따라서, 당신은 전송해야합니다

logcom = "LOGON\\n Protocol-Version: 2.0\\n App-type: Windows x86\\n Operator: PC_CLIENT\\n name: " + pal_user + "\\n capabilities: 4\\n" 

을 사용하면 줄 바꿈 포함하여 데이터를 전송해야하는 경우, 나는 루프에서 socket.send를 사용하려고 할 것입니다.

+2

또는 문자열 리터럴 앞에'r'을 넣으십시오. – asmeurer

+0

잘 패킷 내 전체 \ n을 보낼 필요가 있지만 무엇이든 관계없이 EOL로 취급됩니다. – user1792652

+0

줄 바꿈 문자는 끝 문자입니다 ... 패킷 구조와 같은 – Michael

2

거의 확실하게 한 줄에 닫는 인용 부호가 있습니다. 다음과 같이 사용하면

logcom = "LOGON\n Protocol-Version: 2.0\n App-type: Windows x86\n Operator: PC_CLIENT\n name: " + pal_user + "\n capabilities: 4\n" 
socket.sendall(logcom) 

당신이 당신의 소스 코드에서 여러 줄 이상을 분할 할 경우, 당신은 귀하의 질문에, 당신은 삼중 따옴표와 함께 이런 식으로 작성해야 :

logcom = """LOGON 
Protocol-Version: 2.0 
App-type: Windows x86 
Operator: PC_CLIENT 
name: {} 
capabilities: 4 
""".format(pal_user) 
socket.sendall(logcom) 
관련 문제