udp 소켓 통신 예제

간단한 서버를 살펴보겠습니다. 소켓을 만들고 컴퓨터에서 사용 가능한 모든 IP 주소에 바인딩하지만 특정 포트 번호에 바인딩합니다. 그런 다음 메시지를 수신하고 내용을 인쇄하는 루프를 합니다. Silver Moon의 접근 방식은 작동하지만 가장 좋은 방법은 epoll()을 사용하여 소켓 연결을 비동기적으로 수신하고 TCP가 UDP가 아닌 UDP를 사용하는 것이므로 UDP는 신뢰할 수 없으므로 일부 명령이 의도한 대로 서버에 연결되지 않을 수 있습니다. 이것이 대부분의 최신 소켓 서버에서 수행되는 것입니다. epoll() (리눅스 시스템 호출 그래서 라즈베리 파이에서 작동 해야)를 사용 하는 방법을 인터넷 검색을 시도 합니다. 이를 통해 효율적이고 확장 가능한 소켓 서버를 사용할 수 있습니다. (나는 실제로 거의 메인 서버와 epoll() TCP와 함께 라즈베리 파이를 사용 하 여 IoT 소켓 통신 시스템 개발 완료 내가 아는 한 물건의이 종류에 대 한 최고의 접근. 처음 세 개의 인수는 sockfd, 버프 및 nbytes는 읽기 및 쓰기의 처음 세 인수와 동일합니다. sockfd는 소켓 설명자이며, 버프는 읽을 포인터이며 nBYTES는 읽을 바이트 수입니다. 이 예제에서는 플래그 인수의 모든 값을 0으로 설정합니다. recvfrom 함수는 데이터그램을 보낸 사람의 프로토콜 주소로 가리키는 소켓 주소 구조를 채웁니다. 소켓 주소 구조에 저장된 바이트 수는 addrlen이 가리키는 정수로 반환됩니다.

연결이 없기 때문에 서버는 연결을 수신하고 수락할 필요가 없습니다. bind()를 사용하여 소켓을 포트와 연결한 다음 개별 메시지를 기다려야 합니다. UDP는 사용자 데이터그램 프로토콜의 약어입니다. UDP는 TCP/IP 소송의 인터넷 프로토콜을 사용합니다. UDP를 사용하는 통신에서 클라이언트 프로그램은 대상 서버가 UDP에서도 실행되는 대상 서버로 메시지 패킷을 보냅니다. 속도 외에도 일부 종류의 통신은 TCP의 안정성을 필요로 하지 않고 대신 낮은 대기 시간을 가치로 삼을 필요가 있습니다. 이 비디오는 TCP 대신 UDP를 통해 실행하면 도움이 될 수 있는 응용 프로그램의 좋은 예입니다. 그 문자를 보낸 경우, 어떻게 어떤 파일을 보내는 방법에 대한 예를 들어 그림, 전송 된 그림으로 전송 된 스크립트 문자를 변경하는 방법..? 소켓 주소 구조는 항상 모든 소켓 함수에 대한 인수로 참조하여 전달됩니다. 그러나 인수로 이러한 포인터 중 하나를 취하는 모든 소켓 함수는 지원되는 프로토콜 패밀리의 소켓 주소 구조를 처리해야 합니다. 전달되는 포인터 의 형식을 선언할 때 문제가 발생합니다. ANSI C를 사용하면 void * (일반 포인터 유형)를 사용하는 것이 해결책입니다.

그러나 소켓 함수는 ANSI C의 정의를 선행하고 선택한 솔루션은 다음과 같이 일반 소켓 주소를 정의하는 것이었습니다. send()는 다음과 같이 정의됩니다: 서버 측에 TCP 소켓을 설정하는 데 관련된 단계는 다음과 같습니다: 두 바이트를 메모리에 저장하는 방법은 두 가지가 있습니다: 시작 주소(리틀 엔디안 바이트 순서)에서 낮은 바이트또는 고차 바이트를 사용하여 메모리에 두 개의 바이트를 저장하는 방법이 있습니다. 시작 주소(빅 엔디안 바이트 순서)입니다. 이를 집합적으로 호스트 바이트 순서라고 합니다. 예를 들어 인텔 프로세서는 32비트 정수를 1-2-3-4 순서로 메모리에 4개의 연속 바이트로 저장합니다. IBM PowerPC 프로세서는 정수 주문을 바이트 순서 4-3-2-1로 저장합니다.

Share on FacebookPin on PinterestTweet about this on TwitterShare on TumblrShare on Google+Digg this