【Linux】查看指定端口的UDP、TCP是否收到数据【2023.07.24】

简介

  场景是终端上报数据给服务端,会有前端进行展示。通过wireshark看到终端给服务端发送数据了,但是UDP无法确定服务端是否正确收到,于是需要在Linux执行一些命令查看是否收到数据。

命令

这个命令会抓取发往或从端口12222的UDP数据报文。
其中:

  • -i enp2s0:指定抓取接口enp2s0上的流量
  • udp:只抓取udp协议的数据包
  • port 12222:抓取目标端口是12222的udp包
    不指定协议和端口时,默认会抓取接口上所有流量。
    指定udp协议和目标端口12222后,就只会抓取发往或发自这个端口的udp流量。
    如果出现抓包结果,说明目标端口有udp流量,可以使用Ctrl+C组合键停止抓包。
    需要root权限才能抓取网络流量,所以要使用sudo启动tcpdump。 (已编辑)

tcpdump -i enp2s0 udp port 12222
-i 的参数 enp2s0是执行ip address指令,查到的网卡信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一份简单的代码示例,可以接收来自IP地址为192.168.1.1的UDP数据包,并打印出其地址和端口。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define PORT 8888 int main() { int sockfd; struct sockaddr_in server_addr, client_addr; socklen_t client_len = sizeof(client_addr); char buffer[1024]; // 创建socket sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd < 0) { perror("socket"); exit(1); } // 绑定地址和端口 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT); if(bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("bind"); exit(1); } // 接收数据并打印地址和端口 while(1) { memset(buffer, 0, sizeof(buffer)); if(recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&client_addr, &client_len) < 0) { perror("recvfrom"); exit(1); } if(strcmp(inet_ntoa(client_addr.sin_addr), "192.168.1.1") == 0) { printf("Received data from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); printf("Data: %s\n", buffer); } } // 关闭socket close(sockfd); return 0; } ``` 在上述代码中,我们首先创建了一个UDP socket,并将其绑定到本地地址和端口。然后,我们使用`recvfrom()`函数从客户端接收数据,并使用`inet_ntoa()`函数将客户端地址转换为字符串形式。接着,我们判断该数据是否来自IP地址为192.168.1.1的客户端,如果是,则打印出其地址和端口以及接收到数据。最后,我们将代码放入一个无限循环中,以等待下一次接收数据。 需要注意的是,该代码仅为一个简单的示例,您需要根据实际情况进行调整。同时,您还需要在代码中添加必要的错误处理机制,以确保程序能够正确地处理各种异常情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值