파이썬 소켓 예제

On agosto 2, 2019 by adminmg

그 대가로 세 가지 목록을 받게 됩니다. 여기에는 실제로 읽을 수 있고, 쓰기 가능하고, 오류가 있는 소켓이 포함되어 있습니다. 이러한 각 목록은 전달한 해당 목록의 하위 집합(비어 있을 수 있음)입니다. 가장 먼저 주의해야 할 점은 웹 브라우저의 “클라이언트” 소켓과 웹 서버의 “클라이언트” 소켓이 동일한 짐승이라는 것입니다. 즉, 이것은 “피어 투 피어” 대화입니다. 또는 디자이너로서, 다른 방법을 넣어, 당신은 대화에 대한 에티켓의 규칙이 무엇인지 결정해야합니다. 일반적으로 연결 소켓은 요청을 보내거나 서명한 것으로 대화를 시작합니다. 그러나 그것은 디자인 결정입니다 – 그것은 소켓의 규칙이 아닙니다. 다른 연결이 영향을 받지 않도록 오류를 적절하게 처리하는 클라이언트와 서버를 원합니다. 물론, 예외가 잡히지 않으면 클라이언트 나 서버가 분노의 공에 충돌해서는 안됩니다. 이것은 우리가 지금까지 논의하지 않은 무언가이다.

예제에서 간결성과 명확성을 위해 의도적으로 오류 처리를 배제했습니다. 소켓을 만들려면 소켓이라는 함수가 있습니다. 패밀리, 유형 및 프로토 인수(자세한 내용은 설명서 참조)를 허용합니다. TCP 소켓을 만들려면 가족 및 소켓에 socket.AF_INET 또는 socket.AF_INET6을 사용해야 합니다. 형식에 대한 SOCK_STREAM입니다. 다음은 Python 소켓 예제입니다: 마지막으로, 차단 소켓이 비 차단보다 다소 느리더라도 대부분의 경우 “올바른” 솔루션이라는 것을 기억하십시오. 결국 앱이 소켓을 통해 수신하는 데이터에 의해 구동되는 경우 앱이 recv 대신 선택에서 기다릴 수 있도록 논리를 복잡하게 만드는 것은 별로 의미가 없습니다. 메시지 경계의 위치를 정의하고 추적하는 것은 사용자에게 달려 있습니다.

TCP 소켓과 관련해서는 네트워크에서 원시 바이트를 보내고 받는 것일 뿐입니다. 그것은 그 원시 바이트의 의미에 대해 아무것도 모른다. 즉, 이러한 메시지에 대해 선택하는 길이와 형식은 응용 프로그램의 의미 체계와 동작을 정의합니다. 이것은 소켓에서 바이트를 읽는 것과 관련하여 이전 단락에서 설명한 내용과 직접 관련이 있습니다. recv()를 사용하여 바이트를 읽을 때는 읽은 바이트 수를 파악하고 메시지 경계가 어디에 있는지 파악해야 합니다.

Comments are closed.