python 소켓 통신 예제

Posted on

이 튜토리얼은 당신에게 당신의 소켓 개발 여행에 당신을 시작하는 데 필요한 정보, 예제 및 영감을 주었으면 좋겠다. 파이썬에서 소켓을 사용하려면 소켓 모듈을 가져와야합니다. 즉, 바이트는 운영 체제의 큐에서 네트워크 버퍼에서 대기하고 있습니다. 한 가지 이유는 응용 프로그램이 CPU 바인딩이거나 socket.recv() 또는 socket.send()를 호출하고 바이트를 처리할 수 없기 때문입니다. 또는 혼잡이나 네트워크 하드웨어 또는 케이블 연결 실패와 같은 통신에 영향을 미치는 네트워크 문제가 있을 수 있습니다. 여러 프로세스를 사용하는 경우 운영 체제는 GIL 없이 여러 프로세서 또는 코어에서 Python 코드를 병렬로 실행하도록 예약할 수 있습니다. 아이디어와 영감을 원하기 위해 PyCon 토크 존 리스 – 비동기 및 멀티프로세싱으로 GIL 밖에서 생각하기 – PyCon 2018을 참조하십시오. 소켓은 서버와 클라이언트 간의 양방향 통신 채널의 끝점입니다. 소켓은 프로세스 내에서, 동일한 컴퓨터의 프로세스 간 또는 다른 컴퓨터의 프로세스 간에 통신할 수 있습니다. 원격 프로그램과의 통신을 위해 소켓 포트를 통해 연결해야 합니다. 여기 당신이 볼 수 있듯이 구글에 연결하기위한 스크립트의 예입니다, 차단 에코 서버보다 훨씬 더 많은 코드가있다.

이는 주로 쓰기, 읽기 및 잘못된 소켓에 대한 별도의 목록과 같은 다양한 소켓 목록에 대한 큐 집합을 유지해야 하기 때문입니다. 따라서 파이썬 소켓 서버가 포트 5000에서 실행중이며 클라이언트 요청을 기다립니다. 클라이언트 연결이 닫혀 있을 때 서버가 종료되지 않도록 하려면 if 조건 및 break 문을 제거하기만 하면 됩니다. Python while 루프는 서버 프로그램을 무기한 실행하고 클라이언트 요청을 기다리는 데 사용됩니다. 소켓을 설정한 후 소켓과 함께 저장하려는 데이터가 클래스 형식을 사용하여 만들어집니다. 단순 네임 스페이스. 각 연결이 socket.send()를 호출하고 목록을 수정하기 때문에 클라이언트가 서버에 보낼 메시지는 list(메시지)를 사용하여 복사됩니다. 클라이언트가 보내고, 보내고 받은 것을 추적하는 데 필요한 모든 것, 메시지의 총 바이트 수가 개체 데이터에 저장됩니다.

이제 바이트를 전송하는 몇 가지 방법을 알고 있으므로 Python을 사용하여 클라이언트 및 서버 프로그램을 만들어 보겠습니다. UDS와 유사한 클라이언트-서버 통신 설정을 구현하려면 위의 TCP 예제를 약간 수정해야 합니다. IPC의 다양한 형태 중, 소켓은 지금까지 가장 인기가 있습니다. 어떤 주어진 된 플랫폼에, 빠른 IPC의 다른 형태가 있을 가능성이 있다, 하지만 크로스 플랫폼 통신에 대 한, 소켓은 마을에서 유일한 게임에 대 한. 오늘날 소켓 API에서 사용하는 기본 프로토콜은 수년에 걸쳐 발전해 왔지만 새로운 프로토콜을 보았지만 낮은 수준의 API는 동일하게 유지되었습니다.