C++ UDP送受信:実装方法とサンプルコード

C++でUDP送受信を実装するには、ソケットプログラミングを使用することができます。以下は簡単なサンプルコードです:

UDPパケットを送信する。

#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
    int sockfd;
    struct sockaddr_in serverAddr;

    // 创建UDP socket
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        std::cerr << "Failed to create socket" << std::endl;
        return -1;
    }

    // 设置服务器地址和端口
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(12345);
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // 发送数据
    std::string message = "Hello, UDP!";
    sendto(sockfd, message.c_str(), message.length(), 0, (struct sockaddr*)&serverAddr, sizeof(serverAddr));

    close(sockfd);

    return 0;
}

UDPデータパケットを受信する。

#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
    int sockfd;
    struct sockaddr_in serverAddr, clientAddr;
    socklen_t addrLen = sizeof(clientAddr);
    char buffer[1024];

    // 创建UDP socket
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        std::cerr << "Failed to create socket" << std::endl;
        return -1;
    }

    // 设置服务器地址和端口
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(12345);
    serverAddr.sin_addr.s_addr = INADDR_ANY;

    // 绑定地址和端口
    bind(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr));

    // 接收数据
    int bytesReceived = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr*)&clientAddr, &addrLen);
    buffer[bytesReceived] = '\0';

    std::cout << "Received: " << buffer << std::endl;

    close(sockfd);

    return 0;
}

このコードは、簡単なUDP送受信の例を実現しており、実際の要件に応じてさらなる拡張や最適化が可能です。

bannerAds