社区
网络及通讯开发
帖子详情
关于IP_HDRINCL
seethingreal
2016-10-09 06:41:47
sRAW=::socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
BOOL bIncl=1;
if (SOCKET_ERROR==::setsockopt(sRAW,IPPROTO_IP,IP_HDRINCL,(char*)&bIncl,sizeof(bIncl)))
{
}
//填充IP头数据等
sendto(...);返回10049
用wireshark抓一包数据原封不动的填进去,再sendto,一样的错误,何故?
XP系统。
...全文
1528
2
打赏
收藏
关于IP_HDRINCL
sRAW=::socket(AF_INET,SOCK_RAW,IPPROTO_UDP); BOOL bIncl=1; if (SOCKET_ERROR==::setsockopt(sRAW,IPPROTO_IP,IP_HDRINCL,(char*)&bIncl,sizeof(bIncl))) { } //填充IP头数据等 sendto(...);返回10049 用wireshark抓一包数据原封不动的填进去,再sendto,一样的错误,何故? XP系统。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
seethingreal
2016-10-10
打赏
举报
回复
to FASM_FASM:这个IP头是自定义的,网上有些文章说xp不支持自定义IP头了,但setsockopt是返回成功的
FASM_FASM
2016-10-10
打赏
举报
回复
10049表示本地IP地址或端口不可用,跟你的发送数据无关。
rawsocket-
IP
_
HDRINCL
原始套接字可以访问ICMP和ICMP等协议包,可以读写内核不处理的
IP
数据包。可以创建自定义的
IP
数据包首部。一句话,使用原始套接字可以编写基于
IP
协议的通讯程序。1.创建原始套接字具体格式如下:int sockfd;sockfd = socktet(AF_INET, SOCK_RAW,
IP
PROTO_ICMP);第一个参数:协议族 AF_INET 代表TCP/
IP
协议第二个参数:SOCKET类型第三个参数:协议类型注意:@如果指定协议为0时,原始套接字可以接收内核传递给原始套接字的任何
IP
数据包,且只有
原始套接字
IP
_
HDRINCL
第一个参数:协议族 AF_INET 代表TCP/
IP
协议第二个参数:SOCKET类型第三个参数:协议类型注意:@如果指定协议为0时,原始套接字可以接收内核传递给原始套接字的任何
IP
数据包,且只有超级用户才可以创建原始套接字。@当需要编写自己的
IP
数据包首部时,可以在原始套接字上设置套接字选项
IP
_
HDRINCL
.在不设置这个选项的情况下,
IP
协议自动填充
IP
数据包的首部。在将一个
IP
数据包传送给原始套接字之前,内核需要选择匹配的原始套接字1.数据包的协议域必须与接收原始套接字的协议类型匹配。
ms mac osx 下 raw socket 的
IP
_
HDRINCL
设置无效
偶采用libnet,强行#define
IP
_
HDRINCL
,不成功。改天试试直接调用raw socket。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章