91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-04
  • 語言: C/C++
  • 標簽: linux??C++??源代碼??

資源簡介

在linux平臺上,用C++ 封裝 raw socket套節子編程,包括makefile文件的所有源代碼,希望對你有幫助。

資源截圖

代碼片段和文件信息

#include“head.h“


RawSocket::RawSocket(int?memory?)
{
buffer?=?new?unsigned??char[memory];
this?->?memory?=?memory;
}

RawSocket::~RawSocket()
{
delete?[]buffer;
}

void?RawSocket::create_raw_socket()
{
if((sock?=?socket(PF_PACKET?SOCK_RAW?htons(ETH_P_IP)))? {
fprintf(stdout?“create?socket?error\n“);
}
}

int?RawSocket::receive_data()
{
return??recvfrom(sock?buffer?2048?0?NULL?NULL);
}

void?RawSocket::output_mac_address(unsigned??char?*macHead)
{
unsigned??char?*p?=?macHead;
int?n?=?0XFF;
printf(“MAC:\n?%.2X:%02X:%02X:%02X:%02X:%02X==>%.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n\n“
p[6]&n?p[7]&n?p[8]&n?p[9]&n?p[10]&n?p[11]&n
p[0]&n?p[1]&n?p[2]&n?p[3]&n?p[4]&n?p[5]&n
);
}

void?RawSocket::output_ip_address(unsigned??char?*ipHead)
{
unsigned??char?*p?=?ipHead?+?IP_ADDRESS_OFFSET;
int?n?=?0XFF;
printf(“IP:\n?%u.%u.%u.%u?=>?%u.%u.%u.%u\n\n“
p[0]&n?p[1]&n?p[2]&n?p[3]&n
p[4]&n?p[5]&n?p[6]&n?p[7]&n
);

}

void?RawSocket::output_tcp_port(unsigned??char?*tcpHead)
{
unsigned??char?*p?=?tcpHead;
printf(“source?port:?%u?=>?dest?port:?%u\n“
(((*p)?< ((*(p?+?2)?< );

}

void?RawSocket::output_udp_port(unsigned??char?*udpHead)
{
unsigned??char?*p?=?udpHead;
printf(“source?port:?%u?=>?dest?port:?%u\n“
(((*p)?< ((*(p?+?2)?< );
}

void?RawSocket::output_data(unsigned??char?*dataHead?unsigned?int?len)
{
dataHead[len]?=?‘\0‘;
cout?<}
int?RawSocket::get_protocol(unsigned??char?*ipHead)
{
return?*(ipHead?+?IP_PROTOCOL_OFFSET);
}

double?RawSocket::work(unsigned?int?times)
{
unsigned?int?count?=?0;
unsigned?int?tcpLen?udpLen?dataLen;
double?sumData?=?0.0;
create_raw_socket();
while(++count? {
cout?< cout?< unsigned?int?temp?=?receive_data();
sumData?+=?double(temp);
if(temp? {
cout?< continue;
}
macHead?=?buffer;
output_mac_address(macHead);

ipHead?=?macHead?+?IP_HEAD_OFFSET;
output_ip_address(ipHead);

switch(get_protocol(ipHead))
{
case?IPPROTO_ICMP:?cout?< case?IPPROTO_IGMP:?cout?< case?IPPROTO_IPIP:?cout?< case?IPPROTO_TCP:?cout?< ???tcpHead?=?ipHead?+?((*ipHead)?&?0X0F)?*?4;

??tcpLen?=?(((unsigned?int)((*(ipHead?+?IP_SUM_OFFSET))?< IP_SUM_OFFSET?+?1))?&?0XFF))-?(unsigned?int)(*ipHead?&?0X0F)?*?4;
??cout?<
??output_tcp_port(tcpHead);

??dataLen?=?tcpLen?-?(unsigned?int)?(*(tcpHead?+TCP_DATA_OFFSET)?>>?4)?*?4;
??dataHead?=?tcpHead?+?tcpLen?-?dataLen;?
?
??cout?< ??
??output_data(dataHead?dataLen);
??????????break;
case?IPPROTO_UDP:?cout?<

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3846??2013-03-01?05:04??網絡嗅探器\fun.cpp
?????文件?????????950??2013-03-01?05:03??網絡嗅探器\head.h
?????文件?????????665??2013-03-01?07:07??網絡嗅探器\test.cpp
?????文件????????3728??2013-02-27?03:02??網絡嗅探器\fun.cpp~
?????文件?????????185??2012-12-14?09:08??網絡嗅探器\makefile
?????目錄???????????0??2013-03-08?02:06??網絡嗅探器\

評論

共有 條評論