求一linux接收udp广播程序(提供模板)

求一linux接收udp广播程序(提供模板),第1张

哥们,没bind你收啥?你又把my_addr传给recvfrom干啥(该传their_addr).

我给你写了

#include <stdio.h>

#include <stdlib.h>

#include <netinet/in.h>

#include <sys/socket.h>

#include <sys/types.h>

int main()

{

int n, fd

socklen_t cli_addr_len

char buf[1024] = {0}

struct sockaddr_in servaddr, cliaddr

if((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)

{

printf("socket error!\n")

exit(0)

}

servaddr.sin_family = AF_INET

servaddr.sin_addr.s_addr = htonl(INADDR_ANY)

servaddr.sin_port = htons(9999)

bind(fd, (struct sockaddr *)&servaddr, sizeof(servaddr))

while(1)

{

cli_addr_len = sizeof(cliaddr)

n =recvfrom(fd, buf, 1024, 0, (struct sockaddr *)&cliaddr, &cli_addr_len)

printf("%d\n", n)

}

}

这个程序只能收到发往本机让轮辩IP地址和广播地址的端口为9999的数据包,如果你要监听局域网中的所有广播包(任意端口),可以用原始套接字,我前两天正好写了个,功桐竖能很强大哦:),已经坦缺是个嗅探器了,你用的时候加上 -u 选项就可以了。

famdestiny.cublog.cn

你确认你的广播包在eth0和wlan0上都发出了吗?我估计只闭雀在游态轮eth0上发了。

教你一个神信办法确认,在linux上使用tcpdump 抓包:

tcpdump -i eth0

tcpdump -i wlan0

用ACE,它提供了很完善的一套构埋渗架。

#include "ace/SOCK_Dgram_Mcast.h"

#include "ace/INET_Addr.h"

#include "ace/OS.h"

#include "ace/ACE.h"

#include "ace/Log_Msg.h"

int ACE_TMAIN (int argc, char* argv[])

{

ACE_Time_Value ti = ACE_Time_Value (0, 20000)

ACE_INET_Addr local_addr ((u_short) 9000)

ACE_INET_Addr recv_addr

ACE_SOCK_Dgram recv_dgram

//打开端口

if (recv_dgram.open (local_addr) == -1) {

ACE_DEBUG ((LM_ERROR, "%p\虚谨n", "Recieving data gram open"))

ACE_OS::exit (-1)

}

ACE_Time_Value t = ACE_Time_Value::zero

while (1) {

//recieve data gram

char buf[2048]

//接收UDP数据,

ssize_t recv = recv_dgram.recv (buf, 2048, recv_addr)

//显示接收了多少数据,以及数弯誉脊据的来源

ACE_DEBUG ((LM_DEBUG, "%M [%t %N:%l] %s:%d recieved %d\n", recv_addr.get_host_addr (), recv_addr.get_port_number (), recv))

if (recv <= 0) {

ACE_DEBUG ((LM_DEBUG, "%M [%t %N:%l] Can't recieve any data gram from the port (%s:%d)\n", recv_addr.get_host_addr (),recv_addr.get_port_number ()))

ACE_OS::sleep (ti)

continue

}

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12531611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存