2012-11-01 7 views
0

그래서 파이썬에서 TCP 소켓을 만들고, 권한 부여를 위해 서버가 권한 부여를 위해 여러 헤더를 한꺼번에 전송해야한다면 어떻게해야할까요? socket.sendall을 사용하여 전송할 것이므로 승인 핸드 셰이크 응답을 기다려야합니다. 그 후 데이터가 하나가 될 때까지 데이터 응답을 기다리는 것이 필요합니다. 데이터가 설정된 시간 내에 수신되지 않으면 소켓을 닫지 않으므로 어떻게해야합니까? 이것을 올바르게 보낼 수있는 쉬운 방법이 있습니까? ~~ 편집 ~~ 내 주요 질문은 내가 멀티 라인 패킷을 보내는 방법입니다 같아? :)다중 헤더 파이썬 소켓을 보내시겠습니까?

+3

좀 더 구체적으로 알려주시겠습니까? 사용중인 프로토콜을 포함시킬 수 있습니까? 소켓 레벨과 같은 "헤더"는 없으며 들어오고 나가는 데이터 만 존재합니다. 데이터가 수신되지 않으면 소켓이 닫힐 지 여부와 관련하여, TCP 소켓은 * 아주 * 오랫동안 열려있을 수 있습니다. –

+0

글쎄, 서버 메신저도 너무 길이와 메시지 ID 헤더, TCP 소켓을 통해, 내가 어떻게 여러 줄 메시지를 보내겠습니까 보낼 필요가 보지 참조하십시오? – user1792652

+0

만약 당신이 라인 지향 TCP 프로토콜을 사용하고 있다면, 보낸 문자열에 줄 바꿈을 넣으십시오 :'your_socket.send ("line 1 \ nline 2")' –

답변

1

socket.sendall(data) 기능을 사용하는 SOCK_STREAM 유형의 파이썬 소켓은 단순히 문자열을 보냅니다. 네, 데이터는 문자열입니다. 이제는 자신의 헤더와 줄 및 모든 것을 구성하여 문자열에 넣고 소켓에 모든 것을 서버쪽으로 보내도록 지시 할 수 있습니다.

그런 다음 socket.recv (buffer)를 실행하십시오. 여기서 buffer는 바이트 수의 정수입니다. Thomas Orozco는 TCP 소켓이 매우 오랫동안 열려있을 수 있으므로 서버가 매우 즉각적인 응답을 제공하는지 확인하십시오.

편집 : Btw, TCP는 transportaion layer 프로토콜입니다. 여기에서 좀 더 읽을 수 있습니다 : http://en.wikipedia.org/wiki/Transport_layer. 간단히 말해, TCP는 사용자가 전송하도록 지시 한 모든 것을 전송합니다. 파이썬에서는 문자열입니다.

관련 문제