udp select 예제

프로그램을 실행합니다. 이 예제에서는 프로그램을 백그라운드에서 실행하도록 했습니다. rc = 선택(sd2+1, read_fd, NULL, NULL, 및 시간 시간); 선택 기능은 TCP 소켓과 UDP 소켓 중에서 선택하는 데 사용됩니다. 이 함수는 커널에 여러 이벤트가 발생할 때까지 기다리도록 지침을 제공하고 하나 이상의 이벤트가 발생하거나 지정된 시간이 경과한 후에만 프로세스를 일깨워줍니다. select() 함수를 사용하는 작업 프로그램 예제의 샘플은 다음과 같습니다. 프로젝트 이름은 UDPServerVer2입니다. Windows CE는 콘솔 응용 프로그램을 지원하지 않으며 UNICODE만 사용합니다. 이 예제의 목적은 Winsock과 관련이 없는 코드를 무단으로 이동하지 않고도 Winsock의 핵심 개념을 가르치는 것입니다. Windows CE용 서비스를 작성하지 않는 한 사용자 인터페이스는 거의 항상 필요합니다. 이렇게 하려면 창 처리기 및 기타 사용자 인터페이스 요소에 대 한 많은 추가 함수를 작성 해야 합니다., 우리가 가르치려는 난독 화 수 있습니다.

또한, 유니코드 대 비 유니코드 Winsock 기능의 딜레마가있다. 송수신 Winsock 함수에 전달된 문자열이 UNICODE 또는 ANSI 문자열인지는 프로그래머가 결정해야 합니다. Winsock은 유효한 버퍼인 한 전달하는 내용을 신경 쓰지 않습니다. 물론 컴파일러 경고를 무분별하게 하기 위해 버퍼를 입력해야 할 수도 있습니다. UNICODE 문자열을 char*로 캐스팅하는 경우 보낼 바이트 수에 대한 길이 매개 변수를 적절하게 조정해야 한다는 점을 잊지 마십시오. Windows CE에서 전송되거나 수신된 데이터를 표시하려면 다른 모든 Windows 시스템 함수에 UNICODE 문자열이 필요하므로 데이터를 표시할 수 있도록 유니코드인지 여부를 고려해야 합니다. 요약하면, 윈도우 CE는 간단한 Winsock 응용 프로그램을 만들기 위해 더 많은 하우스 키핑이 필요합니다. 다음 프로그램 예제는 소켓이 TCP를 사용하여 서버를 클라이언트에 연결하고 클라이언트를 서버에 연결하는 연결 지향입니다. 이 예제에서는 보다 완전한 소켓의 API 사용을 제공합니다. ./select: 소켓 4에서 203.106.93.94의 새 연결 if(select(fdmax+1, read_fds, NULL, NULL, NULL) =1) 또한 WSAAsyncSelect() 및 WSAEventSelect()를 사용할 때 공유 소켓에 대한 알림과 관련된 몇 가지 문제를 알고 있어야 합니다. 공유 설명자 중 하나를 사용하여 이러한 호출을 실행하면 해당 등록에 사용된 설명자가 무엇이든 관계없이 소켓에 대한 이전 이벤트 등록이 취소됩니다. 예를 들어 공유 소켓은 B를 처리하는 A 및 FD_WRITE 이벤트를 처리하기 위해 FD_READ 이벤트를 제공할 수 없습니다.

두 설명자 모두에 이벤트 알림이 필요한 경우 프로세스 대신 스레드를 사용할 수 있도록 응용 프로그램 디자인을 다시 고려해야 합니다.