您好,欢迎访问沃航(武汉)科技有限公司官方网站
基于udp传输的log打印程序
2025-02-13 03:09:05

一些物联网设备,由于是全封闭的,无法使用类似引出一根线的方式来进行debug,可以考虑将需要打印的数据发给服务器,通过udp数据打印出来。

下方是我自己写的一个打印接收数据的程序,一共才47行,也不需要任何依赖。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>

int main(int argc, char *argv[])
{
    setvbuf(stdout, NULL, _IONBF, 0);
    unsigned short port = 33660;
    if (argc == 2)
    {
        port = atoi(argv[1]);
    }
    int fd = socket(AF_INET, SOCK_DGRAM, 0);
    if (fd < 0)
    {
        printf("create socket failed\n");
        return -1;
    }
    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)))
    {
        close(fd);
        return -2;
    }
    printf("udp debug server start at port %d\n", port);
    while (1)
    {
        char buf[8 * 1024];
        int l = sizeof(addr);
        ssize_t len = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr*)&addr, &l);
        if (len <= 0)
        {
            close(fd);
            break;
        }
        buf[len] = '\0';
        unsigned char *src_ip = (unsigned char *)&addr.sin_addr.s_addr;
        printf("[%d.%d.%d.%d:%d]%s\n", src_ip[0], src_ip[1], src_ip[2], src_ip[3], ntohs(addr.sin_port), buf);
    }
    return -3;
}


文章作者:沃航科技

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