다음으로 클래스 형식을 사용하여 소켓과 함께 포함하려는 데이터를 보유하는 개체를 만듭니다. 단순 네임 스페이스. 클라이언트 연결이 읽고 쓸 준비가 되면 알고 싶기 때문에 두 이벤트 모두 다음을 사용하여 설정됩니다. 실행 중인 시스템에 따라 훨씬 더 많은 출력이 표시될 수 있습니다. 주목해야 할 사항은 프로토, 로컬 주소 및 (상태) 열입니다. 위의 마지막 예에서 netstat는 에코 서버가 모든 인터페이스(*.65432)에서 포트 65432에서 IPv4 TCP 소켓(tcp4)을 사용하고 있으며 청취 상태(LISTEN)에 있는 것을 보여줍니다. 즉, 구현한 Python 코드는 실시간 앱에서 피어 투 피어 데이터를 전송하는 데 100% 신뢰할 수 없습니다. 피어 투 피어 데이터를 전송할 때 어떻게 신뢰성과 속도를 달성할 수 있을까요? 소켓에서 이벤트가 준비되면 selector.select()에 의해 반환됩니다. 그런 다음 키 개체의 데이터 특성을 사용하여 메시지 개체에 대한 참조를 다시 얻고 메시지의 메서드를 호출할 수 있습니다: 반대로 소켓으로 만든 UDP(사용자 데이터그램 프로토콜) 소켓입니다.

SOCK_DGRAM은 신뢰할 수 없으며 수신자가 읽은 데이터는 보낸 사람의 기록에서 순서가 다를 수 있습니다. host = socket.gethostname() AttributeError: `모듈` 개체에는 `gethostname` 실파이썬 주석 정책: 가장 유용한 의견은 전체 기사와 모든 기사를 읽은 후 다른 독자를 학습하거나 돕는 것을 목표로 작성된 의견입니다. 이전 주석. 불만과 모욕은 일반적으로 여기에 상처를하지 않습니다. 파일 «C:/사용자/hp/AppData/로컬/프로그램/파이썬/파이썬37/소켓_client.py», 25, 클라이언트_program() 파일 «C:/사용자/hp/AppData/로컬/프로그램/파이썬/파이썬37/socket_client.py», 라인 9, client_program_socket_connect(호스트, 호스트, port)) # 서버 연결거부오류: [WinError 10061] 대상 컴퓨터가 적극적으로 거부했기 때문에 연결이 이루어질 수 없습니다. 소켓 유형입니다. SOCK_STREAM. 이렇게 하면 사용되는 기본 프로토콜은 TCP(전송 제어 프로토콜)입니다. 이것은 좋은 기본값이며 아마도 당신이 원하는 것입니다. 메시지 경계의 위치를 정의하고 추적하는 것은 사용자에게 달려 있습니다.

TCP 소켓과 관련해서는 네트워크에서 원시 바이트를 보내고 받는 것일 뿐입니다. 그것은 그 원시 바이트의 의미에 대해 아무것도 모른다. 마지막으로, 소켓차단은 비차단보다 다소 느리지만 대부분의 경우 «올바른» 솔루션이라는 점을 기억하십시오. 결국 앱이 소켓을 통해 수신하는 데이터에 의해 구동되는 경우 앱이 recv 대신 선택에서 기다릴 수 있도록 논리를 복잡하게 만드는 것은 별로 의미가 없습니다. 서버에서 이 방법을 사용하면 대부분의 경우 소켓이 정상이고 네트워크 문제가 없는 경우 항상 쓰기가 가능하다는 것이 장점입니다. 웹 사이트를 열면 백그라운드에서 소켓이 만들어집니다. 채팅 응용 프로그램 이나 다른 네트워크 응용 프로그램에도 동일한 것이 적용 됩니다. sel.register() 관심 있는 이벤트에 대 한 sel.select() 모니터링 할 소켓을 등록 합니다. 청취 소켓의 경우 선택기 의 읽기 이벤트를 원합니다. 이벤트_읽기.