双向UDP可以通过创建两个UDP套接字来实现,一个用于发送数据,一个用于接收数据。以下是一个简单的C语言代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>

#define BUFFER_SIZE 1024
#define PORT 8888

int main() {
    int send_sock, recv_sock;
    struct sockaddr_in server_addr, client_addr;
    char send_buffer[BUFFER_SIZE], recv_buffer[BUFFER_SIZE];

    // 创建发送套接字
    send_sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (send_sock == -1) {
        perror("Failed to create send socket");
        exit(EXIT_FAILURE);
    }

    // 创建接收套接字
    recv_sock = socket(AF_INET, SOCK_DGRAM, 0);
    if (recv_sock == -1) {
        perror("Failed to create receive socket");
        exit(EXIT_FAILURE);
    }

    // 设置服务器地址
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(PORT);
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

    // 绑定接收套接字到服务器地址
    if (bind(recv_sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {
        perror("Failed to bind receive socket");
        exit(EXIT_FAILURE);
    }

    while (1) {
        // 接收数据
        socklen_t addr_len = sizeof(client_addr);
        ssize_t recv_len = recvfrom(recv_sock, recv_buffer, BUFFER_SIZE, 0, (struct sockaddr*)&client_addr, &addr_len);
        if (recv_len == -1) {
            perror("Failed to receive data");
            exit(EXIT_FAILURE);
        }
        recv_buffer[recv_len] = '\0';
        printf("Received: %s\n", recv_buffer);

        // 发送数据
        printf("Enter message to send: ");
        fgets(send_buffer, BUFFER_SIZE, stdin);
        sendto(send_sock, send_buffer, strlen(send_buffer), 0, (struct sockaddr*)&client_addr, addr_len);
    }

    // 关闭套接字
    close(send_sock);
    close(recv_sock);

    return 0;
}

在这个代码示例中,我们首先创建了两个UDP套接字 send_sockrecv_sock,分别用于发送和接收数据。然后我们设置了服务器地址 server_addr,并将接收套接字 recv_sock 绑定到该地址。接下来,在一个无限循环中,我们先接收数据,然后通过发送套接字 send_sock 发送数据

C语言 双向UDP如何实现?需要代码

原文地址: http://www.cveoy.top/t/topic/i0Sb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录