| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1718 人关注过本帖
标题:原始套接字编写Sniffer失败??
只看楼主 加入收藏
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
收藏
 问题点数:0 回复次数:8 
原始套接字编写Sniffer失败??
希望有过原始套接字编程经验的朋友帮忙看一下:

#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment (lib,"ws2_32.lib")
//#define SIO_RCVALL 0x98000001
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
void main()
{
    SOCKET Sniffer;
    int timeout=1000;//接收超时
    struct sockaddr_in addr;
    DWORD dwret=0;
    WSADATA wsa;
    int ret,i;
    BOOL flag=TRUE;
    char RecvBuf[6144];//6KB的接收缓冲区
    if(WSAStartup(MAKEWORD(2,1),&wsa))
    {
        printf("套接字版本协商出错!\n");
        return;
    }
    Sniffer=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);//创建原始套接字
    if(INVALID_SOCKET ==Sniffer)
    {
        printf("创建套接字失败!\n");
        return;
    }
    setsockopt(Sniffer, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)); //设置 IP 头操作选项
    //设置套接字接收超时
    if(SOCKET_ERROR ==setsockopt(Sniffer,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout)))
    {
        printf("设置套接字超时失败!\n");
        closesocket(Sniffer);
        WSACleanup();
        return;
    }
    memset(&addr,0,sizeof(addr));
    addr.sin_family=AF_INET;
    //设置本地地址
    addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    //设置监听端口
    addr.sin_port=htons(1234);
    //绑定端口
    if(SOCKET_ERROR==bind(Sniffer,(struct sockaddr *)&addr,sizeof(addr)))
    {
        printf("绑定本地端口失败!错误号:%d\n",WSAGetLastError());
        closesocket(Sniffer);
        WSACleanup();
        return;
    }
    if(SOCKET_ERROR==ioctlsocket(Sniffer, SIO_RCVALL, (unsigned long*)&dwret))
    {
        printf("设置Socket I/O模式出错!\n");
        closesocket(Sniffer);
        WSACleanup();
        return;
    }
    //循环接收数据
    while(1)
    {
        ret=recv(Sniffer, RecvBuf,sizeof( RecvBuf),0);
        if(SOCKET_ERROR==ret)
        {
            if(WSAETIMEDOUT==WSAGetLastError())continue;
            printf("接收数据包出错!\n");
            closesocket(Sniffer);
            return;
        }
        i++;
        printf("接收到数据包%d",i);
    }
    WSACleanup();
    return;
}
搜索更多相关主题的帖子: Sniffer 套接字 原始 失败 编写 
2007-12-29 10:40
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
顶顶顶顶顶

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-12-29 10:57
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1687
专家分:4253
注 册:2007-12-27
收藏
得分:0 
搞那么多==干什么?
2007-12-29 13:51
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
暂时看不懂,帮你顶一下
2007-12-29 14:12
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
各位 帮帮忙呀?

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2008-01-03 20:25
b2831196
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2008-1-3
收藏
得分:0 

http://www.xiandai.

平时就是喜欢购物
2008-01-03 22:05
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
晕 我相信一定有人有这方面的经验的

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2008-01-04 11:20
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
不太懂,帮你托起来.
2008-01-04 11:43
李香香
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-6-8
收藏
得分:0 
我也需要,谁帮他
2015-06-08 15:58
快速回复:原始套接字编写Sniffer失败??
数据加载中...
 
   



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

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