您好,欢迎访问沃航(武汉)科技有限公司官方网站
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;
}


文章作者:沃航科技

联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn