Silver Moon의 접근 방식은 작동하지만 가장 좋은 방법은 epoll()을 사용하여 소켓 연결을 비동기적으로 수신하고 TCP가 UDP가 아닌 UDP를 사용하는 것이므로 UDP는 신뢰할 수 없으므로 일부 명령이 의도한 대로 서버에 연결되지 않을 수 있습니다. 이것이 대부분의 최신 소켓 서버에서 수행되는 것입니다. epoll() (리눅스 시스템 호출 그래서 라즈베리 파이에서 작동 해야)를 사용 하는 방법을 인터넷 검색을 시도 합니다. 이를 통해 효율적이고 확장 가능한 소켓 서버를 사용할 수 있습니다. (나는 실제로 거의 메인 서버와 epoll() TCP와 함께 라즈베리 파이를 사용 하 여 IoT 소켓 통신 시스템 개발 완료 내가 아는 한 물건의이 종류에 대 한 최고의 접근. 나는 꽤 많은 사람들이 UDP 통신을 만들려고하고 내 클래스를 제안하는 것이 그들에게 도움이 될 수 있다고 생각했다. 패킷의 도착을 보장하기 위해 패킷 의 크기 또는 프로토콜과 같은 것을 정의하지 않으므로 매우 기본적입니다. 그러나 한 프로세스에서 다른 프로세스로 신호를 보내려면 이 구현을 사용하는 방법(즉, 프런트 엔드가 데이터베이스에 데이터를 추가할 때마다 PING 메시지를 보내 백그라운드 프로세스를 깨우는 PING 메시지를 보냅니다.) 문자를 보낸 경우 유용할 수 있습니다. , 어떻게 어떤 파일, 예를 들어 그림을 보내, 전송 된 그림으로 전송 된 스크립트 문자를 변경하는 방법에 대한 ..? 예를 들어 google.com 주소를 찾으려고 한다고 가정합니다. 코드는 다음과 같이 보일 것입니다 : 엑셀런트 예제, 대단히 감사합니다! 나는 단지 작은 추가가 필요하다는 것을 발견했습니다. 서버에서 버퍼를 정리합니다. 그래서 그냥 서버에 추가 : 인수 : 도메인 – 통신 도메인을 지정 (IPv4에 대한 AF_INET6 / IPv6에 대한 AF_INET6) 유형 – 생성 할 소켓의 유형 (TCP에 대한 SOCK_STREAM / UDP에 대한 SOCK_DGRAM) 프로토콜 – 프로토콜은 소켓에 의해 사용되는. 0은 주소 패밀리에 기본 프로토콜을 사용하는 것을 의미합니다.

이 함수는 방금 받은 패킷의 IP 및 포트 정보로 sockaddr 의 구조를 채웁니다. 예를 들어, 먼저 전송하는 코드가 수신하는 경우 수신자가 수신기로 패킷을 전송하는 경우 수신기는 sin_addr 및 sin_port의 구조 값을 올바른 값으로 채울 수 있어야 합니다. 그런 다음 이 정보를 사용하여 sendto()를 호출하여 올바른 컴퓨터로 보낼 수 있습니다. TCP 소켓과 마찬가지로 이 자습서에서는 기본 사항에 중점을 둡니다. 훨씬 더 자세히 탐구 하는 웹에 자습서가 있다. 온라인 수동 페이지는 허용 가능한 매개 변수 및 기능에 대한 최신 정보를 제공합니다. 여기에 설명된 인터페이스는 OS X, Linux 및 Solaris 운영 체제에서 제공하는 시스템 호출 인터페이스이며 일반적으로 모든 유닉스/POSIX 시스템(및 기타 많은 운영 체제)과 유사합니다. 전송 주소는 소켓 주소 구조에 정의되어 있습니다. 소켓은 다양한 유형의 통신 인터페이스와 함께 작동하도록 설계되었기 때문에 인터페이스는 매우 일반적입니다. 포트 번호를 매개 변수로 받아들이는 대신 사용 중이던 주소 패밀리(네트워크 유형)에서 실제 형식이 결정되는 sockaddr 구조를 사용합니다.

예를 들어 UNIX 도메인 소켓을 사용하는 경우 실제로 파일 시스템에서 파일을 만듭니다. 이 예제는 포트를 0으로 설정하여 사용 가능한 포트 번호를 선택하도록 운영 체제에 요청합니다.