如何使用原始套接字发送数据??
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;
}