08/02/2019 - No Comments!

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

호스트 이름을 사용하든 그렇지 않든 응용 프로그램에서 보안 연결(암호화 및 인증)을 지원해야 하는 경우 TLS를 사용하는 방법을 살펴볼 수 있습니다. 이것은 자체 별도 항목이며 이 자습서의 범위를 벗어납니다. 시작하려면 파이썬의 ssl 모듈 설명서를 참조하십시오. 이 프로토콜은 웹 브라우저가 웹 사이트에 안전하게 연결하는 데 사용하는 것과 동일한 프로토콜입니다. 오류를 보기 전에 전송할 수 있는 데이터의 양을 확인하기 위해 테스트 서버에 연결하고 socket.send()를 반복적으로 호출하는 테스트 클라이언트를 작성했습니다. 테스트 서버는 socket.recv()를 호출하지 않습니다. 그것은 단지 연결을 수락합니다. 이렇게 하면 서버의 네트워크 버퍼가 채워지므로 결국 클라이언트에 오류가 발생합니다. 클라이언트 프로그램은 서버가 수행하는 방식과 다르게 소켓을 설정합니다. 포트에 바인딩하고 수신 대기하는 대신 connect()를 사용하여 소켓을 원격 주소에 직접 연결합니다. Real Python의 각 튜토리얼은 개발자 팀이 만든 것으로, 높은 품질 기준을 충족시면 됩니다. 이 자습서에서 작업한 팀 멤버는 HTTP와 같은 프로토콜이 한 번의 전송에만 소켓을 사용합니다.

클라이언트가 요청을 보낸 다음 응답을 읽습니다. 그거에요. 소켓이 삭제됩니다. 즉, 클라이언트는 0바이트를 수신하여 응답의 끝을 감지할 수 있습니다. 모든 것이 어떻게 함께 작동하는지 이해하기 위해 익숙해질 수있는 많은 조각이 있습니다. 그러나 파이썬과 마찬가지로 개별 조각을 알고 더 많은 시간을 보내면 더 이해하기 시작합니다. select()를 사용하면 두 개 이상의 소켓에서 I/O 완료를 확인할 수 있습니다. 따라서 select()를 호출하여 I/O가 읽기 및/또는 쓰기준비가 된 소켓을 확인할 수 있습니다. 그러나 이것은 파이썬이기 때문에 더 많은 것이 있습니다.

우리는 표준 라이브러리에서 선택기 모듈을 사용하셔서 운영 체제에 관계없이 가장 효율적인 구현을 사용할 것입니다: 다음 섹션을 읽고 예제를 실행하고 코드를 실험한 후, 당신은 일이 어떻게 작동하는지 볼 수 있습니다. 그런 다음 Message 클래스를 시작점으로 사용하여 사용자 고유의 용도로 수정할 수 있습니다. 소켓과 소켓 API는 네트워크를 통해 메시지를 보내는 데 사용됩니다. 그들은 프로세스 간 통신 (IPC)의 형태를 제공합니다. 네트워크는 컴퓨터에 대한 논리적로컬 네트워크이거나 외부 네트워크에 물리적으로 연결된 네트워크일 수 있으며, 다른 네트워크에 대한 자체 연결도 있습니다. 명백한 예는 ISP를 통해 연결하는 인터넷입니다. listen()를 호출하면 소켓이 서버 모드로 전환되고 accept() 수신 연결이 대기됩니다. 이 게시물의 모든 코드는 파이썬 소켓 데모 저장소의 GitHub에서 호스팅됩니다. 마지막으로, 소켓차단은 비차단보다 다소 느리지만 대부분의 경우 "올바른" 솔루션이라는 점을 기억하십시오. 결국 앱이 소켓을 통해 수신하는 데이터에 의해 구동되는 경우 앱이 recv 대신 선택에서 기다릴 수 있도록 논리를 복잡하게 만드는 것은 별로 의미가 없습니다.

이 방법을 사용하는 것은 아니지만 예를 들어 HTTP는 응용 프로그램이 열려 있는 연결을 닫거나 유지하는 방법을 표준화하는 데 사용되는 "연결"이라는 헤더를 사용합니다. 자세한 내용은 RFC 7230, 하이퍼텍스트 전송 프로토콜(HTTP/1.1): 메시지 구문 및 라우팅 섹션 6.3을 참조하십시오. 곧 살펴보겠습니다, 우리는 socket.socket()를 사용 하 여 소켓 개체를 만들고 소켓 으로 소켓 형식을 지정 합니다. SOCK_STREAM. 이렇게 하면 사용되는 기본 프로토콜은 TCP(전송 제어 프로토콜)입니다. 이것은 좋은 기본값이며 아마도 당신이 원하는 것입니다. listen() 에는 백로그 매개 변수가 있습니다. 새 연결을 거부하기 전에 시스템에서 허용하는 허용되지 않는 연결 수를 지정합니다. 파이썬 3.5에서 시작, 그것은 선택 사항입니다. 지정하지 않으면 기본 백로그 값이 선택됩니다. 우리가 전에 설명 하 고 아래 볼 거 야, 소켓작업 상태 유지 포함.

Published by: jeshurun

Comments are closed.