标题:程序获取通过某个端口的UDP数据包
取消只看楼主
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
结帖率:80%
已结贴  问题点数:20 回复次数:2 
程序获取通过某个端口的UDP数据包
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h> //for sockaddr_in
#include <sys/types.h> //for socket
#include <sys/socket.h> //for socket
#include <string.h>

#define MAX_LEN 256

static const int ITEM_COUNT = 100;

int main()
{
    int sock;
    if((sock = socket(AF_INET,SOCK_DGRAM,0))<0)
    {
        printf("create socket error!");
        return 0;
    }
    printf("socket sock=%d\n",sock);

    struct sockaddr_in addr;
    bzero(&addr,sizeof(addr));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(13456);
    addr.sin_addr.s_addr=inet_addr("127.0.0.1");


    int r;
    int fd = sock;
    r=bind(fd,(struct sockaddr*)&addr,sizeof(addr));
    if(r==-1)
    {
        printf("Bind error!\n");
        close(fd);
        exit(-1);
    }
    printf("Bind successfully.\n");

    char buf[MAX_LEN];
    struct sockaddr_in from;
    socklen_t len;
    len=sizeof(from);
    while(1)
    {
        printf("准备接受数据··\n");
        bzero(buf,sizeof(buf));
        r=recvfrom(fd,buf,sizeof(buf),0,(struct sockaddr*)&from,&len);//成功则返回接收到的字符数,失败返回-1.
        printf("收到的字符数为%d\n",r);
        if(r<0)
        {
            break;
        }
    }
    close(fd);
    return 0;
}
发这个简单些的代码,想问个问题。
我用tcpreplay指令:tcpreplay -c udp.cache -p 10 -i eth1 -l 0 rewrite.pcap重发数据包
然后使用tcpdump -i eth1 udp and host 127.0.0.1也是能看到数据包的
为什么程序运行到recvfrom()处就一直阻塞在那了,一个字符都不去接收。。。
明明有那么多UDP数据包,源和目的地址是127.0.0.1,端口号也是一致的。
搜索更多相关主题的帖子: 数据包 
2013-08-13 17:30
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
得分:0 
回复 2楼 yuccn
Thanks,监听网卡不太会额,有没有什么NB点的资料,给点学习一下。
2013-08-13 19:14
fightingsss
Rank: 6Rank: 6
等 级:侠之大者
帖 子:97
专家分:471
注 册:2010-11-12
得分:0 
回复 4楼 yuccn
好吧,我先去看看libpcap(wincap那是windows下的吧,我是在linux下运行的)吧。。。

[ 本帖最后由 fightingsss 于 2013-8-14 09:33 编辑 ]
2013-08-14 09:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419036-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.155427 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved