亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ping.cpp

?? 一個用ACE別寫的ping 程序
?? CPP
字號:
// Ping.cpp: implementation of the CPing class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Ping.h"
#include "ace/OS_NS_sys_socket.h"
#include "ace/Log_Msg.h"
#include "ace/OS_NS_sys_time.h"
#include "ace/OS_NS_unistd.h"

//////////////////////////////////////////////////////////////////////
// CPing
//////////////////////////////////////////////////////////////////////

int CPing::PingHost(DWORD dwNetOrderIP,int trynums, int timeout)
{
	CPingObj pingobj;

	if( !pingobj.Init(timeout) )
		return false;

	return pingobj.ping(dwNetOrderIP,trynums);
}


int CPing::PingHost(DWORD dwNetOrderIP,int trynums, int timeout,const void * pPingData,int len)
{
	CPingObj pingobj;

	if( !pingobj.Init(timeout) )
		return false;

	return pingobj.ping(dwNetOrderIP,trynums,pPingData,len);	
}

//////////////////////////////////////////////////////////////////////////
//CPingObj
//////////////////////////////////////////////////////////////////////////


CPingObj::CPingObj()
:m_sockRaw(ACE_INVALID_HANDLE),m_timeout(0)
{

}

CPingObj::~CPingObj()
{
	if( ACE_INVALID_HANDLE != m_sockRaw)
	{
		ACE_OS::closesocket (m_sockRaw);
	}

}


//失敗返回0,成功返回其它
int CPingObj::Init(int timeout)
{
	ACE_ASSERT( timeout > 0 );

	m_timeout = timeout;
	
	m_sockRaw = ACE_OS::socket(AF_INET, SOCK_RAW,IPPROTO_ICMP);
	if (m_sockRaw == ACE_INVALID_HANDLE ) 
	{
		return FALSE;
	}

	 if (ACE_OS::setsockopt (m_sockRaw, SOL_SOCKET, SO_SNDTIMEO,
		(char *)&timeout, sizeof(timeout))==SOCKET_ERROR )	
	{
		 ACE_OS::closesocket (m_sockRaw);
		 m_sockRaw = ACE_INVALID_HANDLE;
		return FALSE;
	}
	
	 if (ACE_OS::setsockopt (m_sockRaw, SOL_SOCKET, SO_RCVTIMEO,
		(char *)&timeout, sizeof(timeout))==SOCKET_ERROR )	
	{
		 ACE_OS::closesocket (m_sockRaw);
		 m_sockRaw = ACE_INVALID_HANDLE;
		 return FALSE;
	}

	 return true;
}

int CPingObj::ping(DWORD dwNetOrderIP,int trynums,const void * pPingData,int len)
{
	ACE_ASSERT( trynums > 0 );

	return CPingFunc::ping(dwNetOrderIP,trynums,m_timeout,pPingData,len,m_sockRaw);
}

//由程序隨機構成pPingData和len
int CPingObj::ping(DWORD dwNetOrderIP,int trynums)
{
	ACE_Time_Value curTime = ACE_OS::gettimeofday();
	srand(curTime.sec());

	int buf[8];
	for(int i = 0; i < sizeof(buf)/sizeof(buf[0]); i++)
	{
		buf[i] = rand();	
	}

	return ping(dwNetOrderIP,trynums,buf,sizeof(buf));
}


//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////


#define ICMP_ECHO 8
#define ICMP_ECHOREPLY 0

#define ICMP_MIN 8 // minimum 8 byte icmp packet (just header)

#pragma pack(1)

/* The IP header */
typedef struct _iphdr {
	unsigned char h_len:4;          // length of the header
	unsigned char version:4;        // Version of IP
	unsigned char tos;             // Type of service
	unsigned short total_len;      // total length of the packet
	unsigned short ident;          // unique identifier
	unsigned short frag_and_flags; // flags
	unsigned char  ttl; 
	unsigned char proto;           // protocol (TCP, UDP etc)
	unsigned short checksum;       // IP checksum

	unsigned int sourceIP;
	unsigned int destIP;
}IpHeader;

// ICMP header
typedef struct _ihdr {
  BYTE i_type;
  BYTE i_code; /* type sub code */
  ACE_UINT16 i_cksum;

  ACE_UINT16 i_process_id;
  ACE_UINT16 seq;  


}IcmpHeader;

#pragma pack()

//如果ping通,返回非0,
//沒有ping通,返回0
int CPingFunc::ping(DWORD dwNetOrderIP,int trynums, int timeout,const void * pPingData,int len,ACE_HANDLE sockRaw)
{
	const int send_icmp_data_len = len+sizeof(IcmpHeader);
	char * icmp_data = new char[send_icmp_data_len];

	const int recv_icmp_data_len = len+sizeof(IpHeader)+sizeof(IcmpHeader)+20;
	char * recvbuf = new char[recv_icmp_data_len];

	static ACE_UINT16 seq = 0;
	++seq;

	ACE_UINT16 processid = (ACE_UINT16)ACE_OS::getpid();

	CPingFunc::fill_icmp_data(icmp_data,processid,seq,pPingData,len);	
	
	SOCKADDR_IN dest;
	
	memset( &dest, 0x00, sizeof(dest) );
	dest.sin_family = AF_INET;
	dest.sin_addr.s_addr = dwNetOrderIP;
	
	int bPingOK = FALSE;
	
	for( int i = 0; i < trynums && bPingOK == FALSE ; i++ )
	{	
		int nsended = ACE_OS::sendto(sockRaw,icmp_data,send_icmp_data_len,
			0,(struct sockaddr*)&dest,sizeof(dest));

		if( nsended < send_icmp_data_len )
			continue;

		ACE_Time_Value curTime = ACE_OS::gettimeofday();
	
		do{	
			struct sockaddr_in from;
			memset(&from,0x00,sizeof(from));
			
			int fromlen = sizeof(from);

			int nreaded = ACE_OS::recvfrom(sockRaw,recvbuf,recv_icmp_data_len,
				0,(struct sockaddr*)&from,&fromlen);
			
			if (nreaded == SOCKET_ERROR)
				break;
			
			if( dwNetOrderIP != from.sin_addr.s_addr  )
				continue;

			if ( decode_resp(recvbuf,nreaded,processid,seq,pPingData,len)==1 )
			{
				bPingOK = TRUE;
				break;
			}	
			else
			{
				curTime = ACE_OS::gettimeofday() - curTime;
			}

		}while( curTime.msec() < timeout );
	}
	
	ACE_OS::closesocket (sockRaw);
	delete []recvbuf;
	delete []icmp_data;	

	return bPingOK;

}

int CPingFunc::decode_resp(const char *buf, int bytes,ACE_UINT16 i_process_id,ACE_UINT16 seq,const void * pPingData,int len)
{
	IpHeader * iphdr = (IpHeader *)buf;

	ACE_UINT16 iphdrlen = iphdr->h_len * 4 ; // number of 32-bit words *4 = bytes
	ACE_UINT16 total_len = ACE_NTOHS(iphdr->total_len);
  
	if (bytes  < iphdrlen + ICMP_MIN + len) 
	{
		return FALSE;
	}

	IcmpHeader * icmphdr = (IcmpHeader*)(buf + iphdrlen);

	if (icmphdr->i_type != ICMP_ECHOREPLY) 
	{	
		return FALSE;
	}

	if( icmphdr->i_process_id != i_process_id 
		|| icmphdr->seq != seq )
	{	
		return FALSE;
	}

	return (memcmp((char *)icmphdr+sizeof(IcmpHeader),pPingData,len)==0);
}



/* 
	Helper function to fill in various stuff in our ICMP request.
*/
void CPingFunc::fill_icmp_data(char * icmp_data,ACE_UINT16 i_process_id,ACE_UINT16 seq,const void * pPingData,int len)
{
	IcmpHeader *icmp_hdr = (IcmpHeader*)icmp_data;
	
	icmp_hdr->i_type = ICMP_ECHO;
	icmp_hdr->i_code = 0;
	icmp_hdr->i_cksum = 0;

	icmp_hdr->i_process_id = i_process_id;
	icmp_hdr->seq = seq;

	if (pPingData && len > 0)
	{
		memcpy(icmp_data + sizeof(IcmpHeader),pPingData,len);
	}
	
	icmp_hdr->i_cksum = checksum((ACE_UINT16 *)icmp_data,len+sizeof(IcmpHeader));

	return;
}

ACE_UINT16 CPingFunc::checksum(const ACE_UINT16 *buffer, int size) 
{	
	unsigned long cksum=0;
	
	while(size >1) {
		cksum+=*buffer++;
		size -=sizeof(ACE_UINT16);
	}
	
	if(size ) {
		cksum += *(BYTE*)buffer;
	}
	
	cksum = (cksum >> 16) + (cksum & 0xffff);
	cksum += (cksum >>16);
	return (ACE_UINT16)(~cksum);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产精品大片| 亚洲一线二线三线久久久| 欧美性猛交xxxx乱大交退制版 | 一区二区三区精品视频| 国产精品传媒入口麻豆| 中文字幕一区二区三区不卡| 国产精品毛片大码女人| 国产精品欧美精品| 亚洲欧洲av一区二区三区久久| 国产精品久久毛片a| 亚洲欧美日韩在线| 亚洲网友自拍偷拍| 奇米综合一区二区三区精品视频| 免费人成精品欧美精品| 国产在线看一区| 国产九色精品成人porny| 成人性视频网站| 色婷婷av一区二区| 日韩色视频在线观看| 精品国产区一区| 久久青草国产手机看片福利盒子 | 一本大道综合伊人精品热热| 欧洲日韩一区二区三区| 日韩视频一区在线观看| 欧美激情一二三区| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲愉拍自拍另类高清精品| 日本成人中文字幕在线视频| 高清不卡一区二区在线| 欧美性感一类影片在线播放| 精品久久久久久久久久久久包黑料| 久久精品人人做人人爽97 | 欧美午夜精品一区二区三区 | 国产主播一区二区三区| 91在线精品一区二区| 7777精品伊人久久久大香线蕉完整版 | 欧美三级中文字幕在线观看| 欧美一级高清片在线观看| 国产日韩欧美一区二区三区综合| 一区二区三区在线免费播放| 久久精品国产99久久6| 色悠悠久久综合| 久久免费视频色| 亚洲国产精品一区二区www| 国产91精品在线观看| 5566中文字幕一区二区电影| 国产欧美久久久精品影院| 天堂精品中文字幕在线| 成人av网站在线| 精品少妇一区二区| 亚洲激情第一区| 成人av在线播放网址| 精品精品国产高清a毛片牛牛| 亚洲精品中文在线影院| 国产精品中文欧美| 911精品国产一区二区在线| 中文字幕在线免费不卡| 国内不卡的二区三区中文字幕 | 欧美一区二区久久久| 亚洲精品国产品国语在线app| 国产成人三级在线观看| 精品国产一区二区三区忘忧草| 亚洲国产精品久久久久婷婷884| k8久久久一区二区三区| 久久欧美一区二区| 精品一二三四区| 日韩欧美国产一二三区| 蜜臀久久久99精品久久久久久| 欧美丝袜丝nylons| 亚洲一区在线视频| 日本丰满少妇一区二区三区| 亚洲欧洲国产专区| 91免费观看视频| 亚洲人成在线播放网站岛国| 97精品久久久久中文字幕| 国产视频一区二区三区在线观看| 国产乱色国产精品免费视频| 2017欧美狠狠色| 国产一区二区三区黄视频 | 欧美激情一区二区| 成人h动漫精品一区二| 国产精品天美传媒| 成人国产精品免费网站| 亚洲欧美日韩国产综合| 欧美综合在线视频| 午夜精品aaa| 日韩精品一区二区三区中文精品 | 亚洲视频免费看| 在线亚洲高清视频| 天天综合网 天天综合色| 欧美日韩成人激情| 麻豆成人久久精品二区三区小说| 精品日韩欧美在线| 成人av在线电影| 亚洲国产另类精品专区| 精品奇米国产一区二区三区| 国产一区二区免费在线| 中文字幕视频一区| 欧美日韩亚洲丝袜制服| 麻豆成人久久精品二区三区小说| 欧美激情一区二区三区不卡| 色综合一个色综合| 美腿丝袜亚洲综合| 国产精品无圣光一区二区| 欧美日韩在线免费视频| 另类中文字幕网| 亚洲午夜久久久久久久久电影院| 日韩一区二区三区免费看| 国产九色sp调教91| 亚洲理论在线观看| 91精品国产综合久久久久久久| 国产福利不卡视频| 亚洲国产一区二区三区青草影视| 日韩精品一区在线观看| 色综合av在线| 国产不卡在线播放| 日本中文字幕一区| 亚洲精品成人少妇| 久久综合五月天婷婷伊人| 日本丶国产丶欧美色综合| 国产一区欧美二区| 午夜精品福利一区二区三区av| 国产精品久久网站| 精品国产露脸精彩对白| 色婷婷久久综合| 国产乱码精品一区二区三区忘忧草| 一区二区激情小说| 国产精品国产自产拍高清av | 久久久久久久久一| 欧美日韩国产综合草草| av在线一区二区| 国产91高潮流白浆在线麻豆 | 久久久亚洲综合| 欧美精品tushy高清| 色欧美日韩亚洲| 成人小视频免费观看| 久久99精品视频| 婷婷中文字幕一区三区| 亚洲人快播电影网| 国产精品蜜臀av| 国产人伦精品一区二区| 精品嫩草影院久久| 欧美一级黄色大片| 91精品欧美综合在线观看最新 | 成人爽a毛片一区二区免费| 青青草国产精品亚洲专区无| 亚洲成人777| 亚洲第一av色| 亚洲一二三四区不卡| 一区二区欧美国产| 亚洲激情自拍偷拍| 亚洲综合色区另类av| 亚洲毛片av在线| 亚洲一区在线观看免费| 亚洲最新在线观看| 亚洲一区在线播放| 日韩激情中文字幕| 免费高清在线一区| 国内精品伊人久久久久av影院 | 日韩理论片一区二区| 中文字幕一区二区三区在线观看| 欧美激情一区二区三区全黄 | 日韩精品一级二级| 亚洲国产精品自拍| 免费在线观看不卡| 高清国产一区二区| 一本久久精品一区二区| 欧美在线观看一区| 7777精品久久久大香线蕉| 日韩欧美精品在线视频| 久久综合视频网| 国产精品伦理一区二区| 最新中文字幕一区二区三区| 一区2区3区在线看| 奇米888四色在线精品| 国内精品久久久久影院一蜜桃| 国产精品888| 日本韩国视频一区二区| 9191成人精品久久| 国产亚洲成av人在线观看导航| 中文字幕一区二区三区蜜月 | 国产91丝袜在线观看| 一本久久综合亚洲鲁鲁五月天 | 日韩精品一区第一页| 国产精品综合久久| 91天堂素人约啪| 日韩一区二区三区电影在线观看 | 一级精品视频在线观看宜春院| 肉丝袜脚交视频一区二区| 国内精品不卡在线| 欧美亚洲综合久久| 精品久久久久久最新网址| 亚洲码国产岛国毛片在线| 日韩av成人高清| 99久久精品99国产精品| 日韩精品一区在线| 香蕉成人啪国产精品视频综合网 | 欧美不卡在线视频| 亚洲欧美另类久久久精品2019| 久久av资源站|