如何使用原始套接字发送数据??

xh7907 2004-12-15 07:17:14
BOOL SendData(unsigned long ip)
{
//检查Winsock版本
WORD ver=MAKEWORD(2,2);
WSADATA wsaData;
int err=WSAStartup(ver,&wsaData);
if(err!=0)
{
_RPT2( _CRT_ERROR,"启动WinSocket version %d.%d 错误!",2,2);
return false;
}
//创建原始套接字
s=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
//设置为对IP头亲自操
BOOL bFlag=TRUE;
err=setsockopt(s,IPPROTO_IP,IP_HDRINCL,(char *)&bFlag,sizeof(bFlag));
if(err!=0)
return false;
//如果要是监听我知道如何做,但是发送总是不成功,
//我是想自己填写IP头的内容
//以下是我的代码,但发送总是失败.
addr.sin_addr.s_addr = ip;//
addr.sin_port = htons(135);
addr.sin_family = AF_INET;
//设置packet前24个字节(IP头)略
//发送
if (sendto(s, packet, packet_size, 0, (struct sockaddr *)&addr, sizeof(addr)) == -1)
return FALSE;
else
return TRUE;

}
...全文
344 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
loucai 2004-12-17
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/downcode.asp?id=2343
windcsn 2004-12-17
  • 打赏
  • 举报
回复
我不知道那里有,但你可以找一找TCP/IP3卷
aoosang 2004-12-17
  • 打赏
  • 举报
回复
up
xh7907 2004-12-16
  • 打赏
  • 举报
回复
前一阵看了一个小的网络监视软件,发现原始套接字功能果然强,又看到DDos有关的文章,就决定研究一下.偶做了一个使用原始套接字隐藏IP发送信息服务消息的小东东,现在偶又想有没有方法查出隐藏的IP呢??
有没有可下载的TCP/IP的书呢??
谢谢了.
kingzai 2004-12-16
  • 打赏
  • 举报
回复
http://vchelp.net/cndevforum/subject_view.asp?subject_id=19536
windcsn 2004-12-16
  • 打赏
  • 举报
回复
看你发送什么数据
你定义的SOCKET应该根据是使用的协议来指定,例如;你想控制IP级别的数据,使用
s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
然后按照IP协议的头和包格式,填写IP数据,然后发送.兄弟IP头最少40个字节,多则60个字节,找本TCP/IP的协议书本看看具体格式吧
/*
IP Header format
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/

struct IPHeader
{
UCHAR ver_len;
UCHAR TOS;
USHORT totLength;
USHORT id;
USHORT flag;
UCHAR TTL;
UCHAR protocol;
USHORT checksum;
ULONG sourceIP;
ULONG destIP;

size_t getHeaderSize()
{
return size_t(ver_len&0x0F) * 4;
}

void clear ()
{
clear_struct (*this);
}
};
/*
xh7907 2004-12-15
  • 打赏
  • 举报
回复
我自己刚找到一个例子,先试一试,哪位有好的方法或例子就贴出来看看,谢谢!

18,356

社区成员

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

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