windows mobile下抓包问题(300分一起奉上)

tianya888 2009-05-15 12:59:39
小弟最近在写mobile下gprs流量统计问题,想通过抓包来实现。

但是抓包时原始套接字raw socket的设置老是出错。 望熟悉sniffer的兄弟指点一二
如果问题解决了,另外两个帖子的分一并奉上。连接分别是
http://topic.csdn.net/u/20090508/11/01695581-b3a7-41bf-a0af-1a0efc7f86f5.html
http://topic.csdn.net/u/20090504/15/c39d5fd7-181a-4e66-8a74-86b8e2653006.html

一下是我设置raw socket的代码, 在设置让套接字接受所有的包时的函数

DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
err=WSAIoctl (
m_RawSock,
SIO_RCVALL,//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
&dwBufferInLen,
sizeof(dwBufferInLen),
&dwBufferLen,
sizeof(dwBufferLen),
&dwBytesReturned,
NULL,
NULL
);//最后两参数设置非阻塞

总是返回-1,也就是错误。

平台:mobile6.0
语言:C++
工具:VS2005
...全文
517 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sthad 2010-01-20
  • 打赏
  • 举报
回复
看这个网址:http://social.msdn.microsoft.com/Forums/en/vssmartdevicesvbcs/thread/ea4fa46a-626b-48d2-b976-c59583400993, 应该是WM不支持
nihao38 2009-05-19
  • 打赏
  • 举报
回复
帮顶
tianya888 2009-05-19
  • 打赏
  • 举报
回复
是的,这个我也同意楼上2为看法,
要做到统计所有gprs上网流量又该如何做呢?
文斌 2009-05-19
  • 打赏
  • 举报
回复
同意楼上的,如果只是统计自已程序的流量,按楼上所述即可。
kogai_Sai 2009-05-19
  • 打赏
  • 举报
回复
这个问题没接触过。帮顶。不过我觉得,gprs的流量可以在您做的项目通过下载或访问时的读取的字节数得到的呀。我现在这个项目不需要做流量统计,但如果需要我就会这么做。因为你每读取一次url的内容自然能得到读取的字节数,把它们加起来就是访问的总流量数了。
tianya888 2009-05-19
  • 打赏
  • 举报
回复
beyond你好, 你说的那个API我也用过, 得到的值好混乱,
不知道您做过流量统计方面的吗? 能给些指导吗?
beyondma 2009-05-18
  • 打赏
  • 举报
回复
这样统计流量吗?GetIfTable你看一下这个API?
peterb 2009-05-17
  • 打赏
  • 举报
回复
关注,帮顶。
世外涛缘 2009-05-15
  • 打赏
  • 举报
回复
关注,帮顶。
tianya888 2009-05-15
  • 打赏
  • 举报
回复
不会啊, 都是这么用的啊。
我要抓左右的包,且要包含IPheader的。
88csdn 2009-05-15
  • 打赏
  • 举报
回复
#ifndef UNDER_CE
#define IP_HDRINCL 2 /* header is included with data */
#define IP_TOS 3 /* IP type of service and preced*/
#define IP_TTL 4 /* IP time to live */
#define IP_MULTICAST_IF 9 /* set/get IP multicast i/f */
#define IP_MULTICAST_TTL 10 /* set/get IP multicast ttl */
#define IP_MULTICAST_LOOP 11 /*set/get IP multicast loopback */
#define IP_ADD_MEMBERSHIP 12 /* add an IP group membership */
#define IP_DROP_MEMBERSHIP 13/* drop an IP group membership */
#else
#define IP_TOS 8 /* IP type of service and preced*/
#define IP_TTL 7 /* IP time to live */
#define IP_MULTICAST_IF 2 /* set/get IP multicast i/f */
#define IP_MULTICAST_TTL 3 /* set/get IP multicast ttl */
#define IP_MULTICAST_LOOP 4 /*set/get IP multicast loopback */
#define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */
#define IP_DROP_MEMBERSHIP 6/* drop an IP group membership */
#endif // UNDER_CE

IP_HDRINCL会不会就是原因呢~~~
tianya888 2009-05-15
  • 打赏
  • 举报
回复
多谢帮顶。
nihao38 2009-05-15
  • 打赏
  • 举报
回复
接分,帮顶
tianya888 2009-05-15
  • 打赏
  • 举报
回复
哎, 托了一个星期了, 没脸再拖下去了。 高手们现身啊。
  • 打赏
  • 举报
回复
关注一下
tianya888 2009-05-15
  • 打赏
  • 举报
回复
看过了,10022 提供了一个无效的参数。 我的参数没问题啊
我查了下,网上都是用这些参数写的sniffer
88csdn 2009-05-15
  • 打赏
  • 举报
回复
WSAGetLastError();看一下是什么错误~~~
tianya888 2009-05-15
  • 打赏
  • 举报
回复
套接字设置完整代码

SOCKET m_RawSock;
int err;
char name[128];
hostent *pHostent;
int port=8310;
SOCKADDR_IN sockaddr;
m_RawSock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(m_RawSock==INVALID_SOCKET)
{
return WSAGetLastError(); //socket创建失败
}

err=gethostname(name,128);
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}

pHostent=gethostbyname (name);

sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(port);
memcpy(&sockaddr.sin_addr.s_addr,pHostent->h_addr_list[0],
pHostent->h_length);

//free(pHostent);

err=bind(m_RawSock,(SOCKADDR *)&sockaddr,sizeof(sockaddr));//绑定
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}
BOOL bOptval=TRUE;

//设置套节字选项
setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char*)&bOptval,sizeof(bOptval));
err=setsockopt(m_RawSock,IPPROTO_IP,IP_HDRINCL,(char*)&bOptval, //IP_HDRINCL该选项使之能操作IP头
sizeof(bOptval));
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //设置套节字选项失败
}

//把网卡置于混杂模式。获取IO操作的相关信息
DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
err=WSAIoctl (
m_RawSock,
SIO_RCVALL,//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
&dwBufferInLen,
sizeof(dwBufferInLen),
&dwBufferLen,
sizeof(dwBufferLen),
&dwBytesReturned,
NULL,
NULL
);//最后两参数设置非阻塞


前面一些函数都返回正确, 唯独WSAIoctl返回-1。
(发帖时失误,结果帖子只有20分,,,,我会加上的。)

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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