13397158231   jevian_ma@worldflying.cn

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>

#define PORT   53232 // 监听的端口
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);
    sin.sin_port = htons(PORT);
    printf("listen port is %u\n", PORT);
    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;
}


文章作者:沃航科技

优秀产品推荐:物联网IO控制器

上一篇:go获取tcp数据的调试代码

下一篇:nodejs编写简单的coap服务器

联系我们

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