My Blog

파이썬 소켓프로그래밍 예제

by kai on 2. August 2019 , No comments

Real Python의 각 튜토리얼은 개발자 팀이 만든 것으로, 높은 품질 기준을 충족시면 됩니다. 이 자습서에서 작업한 팀 구성원은 다음과 같습니다: 소켓은 서버 역할을 하고 들어오는 메시지를 수신하거나 다른 응용 프로그램에 클라이언트로 연결하도록 구성할 수 있습니다. TCP/IP 소켓의 양쪽 끝이 연결되면 통신은 양방향입니다. 다음은 소켓으로 작업 할 때 발생할 수있는 몇 가지 일반적인 오류입니다 : 여기에 파이썬 소켓 프로그래밍을 이해하기 위해 Google에 연결하기위한 스크립트의 예입니다, 우리는 세 가지 흥미로운 주제에 대해 알아야합니다 – 소켓 서버, 소켓 클라이언트 및 소켓. 연결이 설정되면 서버에서와 마찬가지로 sendall()이 있는 소켓을 통해 데이터를 보내고 recv()를 사용하여 수신할 수 있습니다. 이러한 것들을 이해하는 데 어려움의 일부는 „소켓“은 컨텍스트에 따라 미묘하게 다른 여러 가지를 의미 할 수 있다는 것입니다. 먼저 대화의 끝점인 „클라이언트“ 소켓과 배전반 운영자와 같은 „서버“ 소켓을 구분해 보겠습니다. 클라이언트 응용 프로그램(예: 브라우저)은 „클라이언트“ 소켓을 단독으로 사용합니다. 말하는 웹 서버는 „서버“ 소켓과 „클라이언트“ 소켓을 모두 사용합니다. 이 경우 클라이언트와 서버는 모두 동일한 컴퓨터에서 실행됩니다.

소켓에는 해당 포트 번호가 있으며, 이 번호는 23456입니다. 원하는 경우 1024에서 65535 사이의 무제한 번호 범위에서 다른 포트 번호를 선택할 수 있습니다. 응용 프로그램을 일시적으로 일시 중단하는 소켓 함수 또는 메서드는 차단 호출입니다. 예를 들어 accept(), connect(), send(), recv() „블록“을 예로 들 수 있습니다. 그들은 즉시 돌아오지 않습니다. 차단 호출은 값을 반환하기 전에 시스템 호출(I/O)을 완료하기 위해 기다려야 합니다. 따라서 호출자는 작업이 완료되거나 시간 시간 또는 기타 오류가 발생할 때까지 차단됩니다. sel.register()에게 EVENT_WRITE도 모니터링하도록 지시하면 이벤트 루프가 즉시 깨어나고 이것이 사실이 있음을 알려줍니다. 그러나 이 시점에서 는 소켓에서 해제하고 send()를 호출할 이유가 없습니다.

요청이 아직 처리되지 않았기 때문에 보낼 응답이 없습니다. 이렇게 하면 귀중한 CPU 주기를 소비하고 낭비할 수 있습니다. 소켓이 출력 판독 가능 목록에 있는 경우 해당 소켓의 recv가 무언가를 반환하는 특정 비즈니스에 가깝습니다. 쓰기 가능한 목록에 대한 동일한 아이디어입니다. 당신은 뭔가를 보낼 수 있습니다. 어쩌면 당신이 원하는 모든,하지만 뭔가 아무것도보다 낫다. (실제로 합리적으로 건강한 소켓은 쓰기 가능한 것으로 반환됩니다 . „서버“ 소켓이 있는 경우 potential_readers 목록에 넣습니다.

그것은 읽을 수있는 목록에 나오는 경우, 당신의 수락은 (거의 확실하게) 작동합니다. 다른 사람에게 연결할 새 소켓을 만든 경우 potential_writers 목록에 넣습니다. 쓰기 가능한 목록에 표시되면 연결된 상당한 기회가 있습니다. 소켓 서버가 포트 5000에서 실행되고 있지만 클라이언트에는 서버에 연결하려면 소켓 포트가 필요합니다. 이 포트는 클라이언트 연결 호출에 의해 임의로 할당됩니다. 이 경우 57822입니다. 이식성 경고: 유닉스에서 선택소켓과 파일 모두에서 작동합니다. Windows에서 이 것을 시도하지 마십시오. Windows에서 소켓에서만 작동합니다. 또한 C에서는 고급 소켓 옵션 의 대부분이 Windows에서 다르게 수행됩니다.

kai파이썬 소켓프로그래밍 예제