急求助 recvfrom为什么一直阻塞在那里收不到数据

xinhai9911 2009-10-27 10:45:44
作snmp的agent,用udp接收数据,数据发出来,用tcpdump可以抓到,但是自己编

写的recvfrom代码却接收不到数据包 ,一直的阻塞在那里。
代码如下:
int main()
{
int res,re,rec,sradd;
char pbPara[1024];
struct sockaddr_in sr,form;
socklen_t formlen;
formlen=sizeof(form);
bzero(&sr,sizeof(sr));
res=socket(AF_INET,SOCK_DGRAM,0);
sr.sin_family=AF_INET;
sr.sin_addr.s_addr=inet_addr("192.168.12.206");
sr.sin_port=htons(161);
rec=bind(res,(structsockaddr*)&sr,sizeof(sr));
if(rec==-1)
{
perror("--- ser bind error---");
exit(1);
}
while(1)
{
bzero(pbPara,1024);
re=recvfrom(res,pbPara,1024,0,(struct sockaddr*)&form,&formlen
printf("--sucess--");
int n=0xFF;
printf("--mac:%.2X:%02X:%02X:%02X:%02X:%

02X==>""%.2X:%.2X:%.2X:%.2X:%.2X:%.2X--",pbPara[6]&n,
pbPara[7]&n,pbPara[8]&n,pbPara[9]&n,pbPara[10]&n,pbPara[11]

&n,pbPara[0]&n,pbPara[1]&n,
pbPara[2]&n,pbPara[3]&n,pbPara[4]&n,pbPara[5]&n);
printf("--ip:%d.%d.%d.%d==>%d.%d.%d.%d--",pbPara[28]&n,pbPara

[29]&n,pbPara[30]&n,pbPara[31]&n,
pbPara[32]&n,pbPara[33]&n,pbPara[34]&n,pbPara[35]&n);
...全文
1212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinhai9911 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xinhai9911 的回复:]
引用 2 楼 nineheadedbird 的回复:
先抓包看数据收到没

用tcpdump抓了包,linux有数据哈,但我改成socket代码就是收不到,另可以收到其他的包
[/Quote]
代码
res=socket(PF_PACKET,SOCK_DGRAM,htons(ETH_P_IP));
while(1)
{
formlen=sizeof(struct sockaddr_in);
re=recvfrom(res,pbPara,1024,0,(struct sockaddr*)&form,&formlen);
printf("\n--sucess--");
int n=0xFF;
usleep(20);
printf("--ip:%d.%d.%d.%d==>%d.%d.%d.%d--",pbPara[28]&n,pbPara[29]&n,pbPara[30]&n,pbPara[31]&n,pbPara[32]&n,pbPara[33]&n,pbPara[34]&n,pbPara[35]&n);
bzero(pbPara,1024);
收到的数据包
--sucess----ip:1.1.6.0==>152.220.173.67--
--sucess----ip:2.1.6.0==>152.220.173.67--
--sucess----ip:116.73.109.88==>83.110.65.71--
--sucess----ip:202.203.99.5==>80.24.31.44--
--sucess----ip:202.203.99.85==>80.24.30.220--
--sucess----ip:202.203.99.165==>80.24.30.140--
--sucess----ip:202.203.99.229==>80.24.30.76--
--sucess----ip:202.203.111.77==>80.16.34.56--
--sucess----ip:202.203.117.1==>80.16.34.56--
--sucess----ip:202.203.125.213==>80.16.34.56--
--sucess----ip:202.203.125.213==>80.24.34.56--
--sucess----ip:202.203.126.21==>80.16.33.248--
--sucess----ip:17.2.128.64==>192.168.12.98--
--sucess----ip:116.73.109.88==>83.110.65.71--
--sucess----ip:17.2.129.187==>192.168.12.166--
--sucess----ip:17.2.128.128==>192.168.12.96--
--sucess----ip:17.2.128.47==>192.168.12.23--
--sucess----ip:182.101.0.0==>0.1.0.0--
--sucess----ip:182.102.0.16==>0.1.0.0--
--sucess----ip:182.103.0.16==>0.1.0.0--
xinhai9911 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bragi523 的回复:]
form在哪里赋值的
是否正确
[/Quote]
改成null,null依旧收不到任何数据,这是这么回事啊???
xinhai9911 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nineheadedbird 的回复:]
先抓包看数据收到没
[/Quote]
抓了包,linux有数据哈,但我的代码就是收不到
xinhai9911 2009-10-27
  • 打赏
  • 举报
回复
用的linux的平台
bragi523 2009-10-27
  • 打赏
  • 举报
回复
form在哪里赋值的
是否正确
greatws 2009-10-27
  • 打赏
  • 举报
回复
抓下包 看看发出去的是什么
NineheadedBird 2009-10-27
  • 打赏
  • 举报
回复
先抓包看数据收到没

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧