casyncsocket udp 예제

처음에 설명했듯이 이러한 함수는 주 응용 프로그램 스레드가 아닌 다른 스레드에서 호출됩니다. 창 스레드에서 무언가를 실행해야 하는 경우 CMySocket 예제에서 볼 수 있듯이 PostMessage를 사용하여 메시지를 보내야 합니다. MFC 개체에는 이 필수가 됩니다. 스레드 간에 전달되는 경우 작동하지 않으며 정의된 동일한 스레드에서 이러한 개체를 사용해야 합니다. 다음 코드는 UDP 데이터그램을 보내고 받는 데 Microsoft MFC의 CAsyncSocket 클래스를 사용하는 방법에 대한 매우 간단한 예제를 제공하기 위한 것입니다. 다음은 OnAccept/AcceptServiceSocket 함수를 설명하는 간단한 예제입니다. 위의 예제는 문자열을 보내고 받습니다. 여러 가지 이유로 UDP 메시지를 작게 유지하는 것이 좋지만 바이트 버퍼를 보내는 것은 간단한 문제입니다(예: 바이트 정렬 구조에 따라). 이 예제에서는 필수적이지 않지만 ntohl()과 같은 함수를 사용하여 수신된 데이터를 처리할 때 다시 변환하기 전에 Microsoft Windows Intel 정렬을 네트워크 바이트 순서로 변환하는 것도 좋습니다. 우리는 이미 OnAccept 이벤트를 보았습니다. 이제 OnReceive 및 OnClose을 분석해 보겠습니다. 이러한 이벤트를 받으려면 CMySocket 예제 클래스에서 이미 볼 수 있듯이 CCESocket을 하위 클래스로 분류하고 새 가상 함수를 제공해야 합니다.

CAsynSocket을 사용하여 UDP 데이터그램을 보내고 받는 방법에 대한 간단한 예제를 찾을 수 없었기 때문에 직접 만들었습니다. 나는 다른 사람들이 유용 할 수 있다고 생각했다. 표시된 예제에서는 두 발신자로부터 데이터를 수신하는 두 개의 독립적인 송신 소켓과 단일 수신기 소켓을 만듭니다. 좋은 예! 그것은 간단하고 즉시 작동! OnAccept, OnReceiveData 및 OnDisconnect는 CMySocket에서 게시한 ON_ACCEPT, ON_RECEIVE 및 ON_CLOSE 이벤트에 의해 트리거됩니다. 그러나 이 예제에 대한 OnAccept 함수만 정의했습니다. 나는 코드가 너무 간단해서 주석이 필요하지 않다고 생각합니다 🙂 따라서 UDP 소켓과의 통신은 매우 간단합니다. 따라서 UDP 소켓은 통신 자체가 매우 간단한 경우(예: dns 요청/응답 등)에 사용됩니다. 또는 멀티 캐스트 / 브로드 캐스트의 일종을 할 때. 데이터가 전송되지 않거나 패킷을 다시 전송하는 데 실패하면 큰 문제가되지 않는 경우 UDP를 사용할 수 있습니다. CAsyncSocket을 사용하여 UDP 메시지를 보내고 받는 것은 방법을 알고 나면 매우 간단합니다.

Microsoft 설명서에서는 TCP와 UDP를 모두 다루며, 이를 단순히 달성할 수 있는 방법을 모호하게 하는 경향이 있습니다. 또 다른 문제, 간단한 예제의 부족, 잘하면 여기에 해결 되었습니다. 내 테스트 응용 프로그램 주요 대화 상자의 코드 조각, UdpTestAppDlg (.cpp & .h), 내가 여기에 제공 한 간단한 UdpReceiveSocket 및 UdpSendSocket 클래스를 사용하는 방법을 보여줍니다. 표시된 예제 코드는 두 개의 독립적인 송신 소켓과 단일 수신기 소켓을 만듭니다. 수신 소켓은 두 발신자로부터 데이터그램을 수신합니다. 이제 줄 «———-:8888». 포트 8888에서 수신 대기하고 있는 UDP 서버입니다. netstat 명령은 udp 서버에 연결된 클라이언트(예: ncat)에 대한 연결을 표시하지 않는다는 점에 유의해야 합니다. WSAEAFNOSUPPORT 지정된 주소 패밀리는 이 포트에서 지원되지 않습니다. .

. . . IPv6 주소를 처리하려면 CAsyncSocket::GetPeerNameEx를 사용합니다. . . 둘 다 문자열 str을 보냅니다. 그러나 후자는 문자열에 EOL을 추가합니다. EOL은 SetEolFormat 함수로 설정됩니다(나중에 참조).

들어오는 데이터를 엿볼 수 있습니다. 데이터는 버퍼에 복사되지만 입력 큐에서 제거되지 않습니다. . 반환 값은 연결이 성공적으로 설정된 경우 TRUE, 오류가 발생하면 FALSE입니다. . 편집 : 4의 오류입니다. TCHAR로 변경하면 사라지지만 임의의 중국어 문자를 출력합니다.

  • Información

    • Últimas Entradas

      가우스 법칙 예제

      처음에 설명했듯이 이러한 함수는 주 응용 프로그램 스레드가…

      피벗 예제

      처음에 설명했듯이 이러한 함수는 주 응용 프로그램 스레드가…

      페르미 추정 예제

      처음에 설명했듯이 이러한 함수는 주 응용 프로그램 스레드가…