C语言获取udp调试数据的代码

2021-04-27 15:26:19

之前小沃写过关于go语言获取udp的代码,感觉延时还是比较高的,所以这次写一个用C实现的,用来接收UDP数据包,同时打印到终端,话不多说,上代码:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netdb.h>

char buff[32*1024];

int main () {
    setvbuf(stdout, NULL, _IONBF, 0);

    int fd = socket(AF_INET, SOCK_DGRAM, 0);
    if (fd < 0) {
        printf("Create socket failed!\n");
        return -1;
    }
    struct sockaddr_in sin;
    memset(&sin, 0, sizeof(struct sockaddr_in));
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = INADDR_ANY; // 任意ip
    sin.sin_port = htons(53232);
    if(bind(fd, (struct sockaddr*)&sin, sizeof(struct sockaddr)) < 0) {
        printf("bind socket failed!\n");
        close(fd);
        return -2;
    }
    while(1) {
        socklen_t sin_len = sizeof(struct sockaddr_in);
        ssize_t len = recvfrom(fd, buff, sizeof(buff), 0, (struct sockaddr*)&sin, &sin_len);
        if(len < 0) {
            printf("recvfrom error!\n");
            continue;
        }
        buff[len] = '\0';
        printf("%s", buff);
    }
    return 0;
}


文章作者:沃航科技

联系我们
地址:武汉市东湖高新开发区光谷总部国际1栋2412室
QQ: 932773931
电话:027-59761089-806
手机:13397158231
邮箱:jevian_ma@worldflying.cn

沃航(武汉)科技股份有限公司版权所有

备案号:鄂ICP备16014230号-1

932773931
13397158231