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

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

?? ping.cpp

?? 冰河源碼
?? CPP
字號:
#include <winsock.h>
#include "ping.h"
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma package(smart_init)

#define MIN_ICMP_PACKET_SIZE 8    //minimum 8 byte icmp packet (just header)
#define MAX_ICMP_PACKET_SIZE 1024 //Maximum icmp packet size

// IP header
typedef struct tagIP_HEADER
{
	unsigned int h_len:4;          // length of the header
	unsigned int 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;
} IP_HEADER;
typedef IP_HEADER FAR* LPIP_HEADER;

// ICMP header
typedef struct tagICMP_HEADER
{
	BYTE i_type;
	BYTE i_code; /* type sub code */
	USHORT i_cksum;
	USHORT i_id;
	USHORT i_seq;
	/* This is not the std header, but we reserve space for time */
	ULONG timestamp;
} ICMP_HEADER;
typedef ICMP_HEADER FAR* LPICMP_HEADER;

void FillIcmpData(LPICMP_HEADER pIcmp, int nData);
BOOL DecodeResponse(char* pBuf, int nBytes, sockaddr_in* from);
USHORT GenerateIPChecksum(USHORT* pBuffer, int nSize);


/////////////////////////////////  Macros & Statics ///////////////////////////

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BOOL CPing::sm_bAttemptedIcmpInitialise = FALSE;
lpIcmpCreateFile CPing::sm_pIcmpCreateFile = NULL;
lpIcmpSendEcho CPing::sm_pIcmpSendEcho = NULL;
lpIcmpCloseHandle CPing::sm_pIcmpCloseHandle = NULL;

__int64 CPing::sm_TimerFrequency = 0;


//Internal class which is used to ensure that the ICMP
//handle and winsock stack is closed upon exit
class _CPING
{
public:
  _CPING();
	~_CPING();
protected:
  HINSTANCE sm_hIcmp;

	friend class CPing;
};

_CPING::_CPING()
{
	sm_hIcmp = NULL;
}

_CPING::~_CPING()
{
	if (sm_hIcmp) {
 		FreeLibrary(sm_hIcmp);
	 	sm_hIcmp = NULL;
	}
	WSACleanup();
}

static _CPING _cpingData;




///////////////////////////////// Implementation //////////////////////////////


BOOL CPing::Initialise() const
{
	if (!sm_bAttemptedIcmpInitialise) {
		sm_bAttemptedIcmpInitialise = TRUE;

		//Initialise the winsock stack
		WSADATA wsa;
		if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0) {
			ShowMessage("WinSock版本不匹配\n");
			return FALSE;
		}

		//Load up the ICMP library
		_cpingData.sm_hIcmp = LoadLibrary("ICMP.DLL");
		if (_cpingData.sm_hIcmp == NULL) {
			ShowMessage("無法載入'ICMP.DLL'\n");
			return FALSE;
		}

		//Retrieve pointers to the functions in the ICMP dll
		sm_pIcmpCreateFile = (lpIcmpCreateFile) GetProcAddress(_cpingData.sm_hIcmp,"IcmpCreateFile");
		sm_pIcmpSendEcho = (lpIcmpSendEcho) GetProcAddress(_cpingData.sm_hIcmp,"IcmpSendEcho" );
		sm_pIcmpCloseHandle = (lpIcmpCloseHandle) GetProcAddress(_cpingData.sm_hIcmp,"IcmpCloseHandle");
		if (sm_pIcmpCreateFile == NULL || sm_pIcmpSendEcho == NULL ||
			sm_pIcmpCloseHandle == NULL)
			ShowMessage("'ICMP.DLL'中函數無效\n");
	}

	return (sm_pIcmpCreateFile != NULL && sm_pIcmpSendEcho != NULL &&
                sm_pIcmpCloseHandle != NULL);
}


BOOL CPing::IsSocketReadible(SOCKET socket, DWORD dwTimeout, BOOL& bReadible)
{
	timeval timeout = {dwTimeout/1000, dwTimeout % 1000};
	fd_set fds;
	FD_ZERO(&fds);
	FD_SET(socket, &fds);
	int nStatus = select(0, &fds, NULL, NULL, &timeout);
	if (nStatus == SOCKET_ERROR) {
		return FALSE;
	}
	else {
		bReadible = !(nStatus == 0);
		return TRUE;
	}
}

BOOL CPing::Ping(LPCTSTR pszHostName, CPingReply& pr, UCHAR nTTL, DWORD dwTimeout, UCHAR nPacketSize) const
{
	//Make sure everything is initialised
	if (!Initialise())
	  return FALSE;

	LPSTR lpszAscii = (LPTSTR) pszHostName;
	//Convert from dotted notation if required
	unsigned long	addr = inet_addr(lpszAscii);
	if (addr == INADDR_NONE) {
		//Not a dotted address, then do a lookup of the name
		hostent* hp = gethostbyname(lpszAscii);
		if (hp)
			memcpy(&addr, hp->h_addr, hp->h_length);
		else {
			ShowMessage("無法解析主機名:"+ AnsiString(pszHostName));
			return FALSE;
		}
	}

	//Create the ICMP handle
	HANDLE hIP = sm_pIcmpCreateFile();
	if (hIP == INVALID_HANDLE_VALUE) {
		ShowMessage("無效的'ICMP'句柄\n");
		return FALSE;
	}

	//Set up the option info structure
	IP_OPTION_INFORMATION OptionInfo;
	ZeroMemory(&OptionInfo, sizeof(IP_OPTION_INFORMATION));
	OptionInfo.Ttl = nTTL;

	//Set up the data which will be sent
	unsigned char* pBuf = new unsigned char[nPacketSize];
	memset(pBuf, 'E', nPacketSize);

	//Do the actual Ping
	int nReplySize = sizeof(ICMP_ECHO_REPLY) + max(MIN_ICMP_PACKET_SIZE, nPacketSize);
	unsigned char* pReply = new unsigned char[nReplySize];
	ICMP_ECHO_REPLY* pEchoReply = (ICMP_ECHO_REPLY*) pReply;
	DWORD nRecvPackets = sm_pIcmpSendEcho(hIP, addr, pBuf, nPacketSize, &OptionInfo, pReply, nReplySize, dwTimeout);

	//Check we got the packet back
	BOOL bSuccess = (nRecvPackets == 1);

	//Check the IP status is OK (O is IP Success)
	if (bSuccess && (pEchoReply->Status != 0)) {
		bSuccess = FALSE;
		SetLastError(pEchoReply->Status);
	}

	//Check we got the same amount of data back as we sent
	if (bSuccess) {
		bSuccess = (pEchoReply->DataSize == nPacketSize);
		if (!bSuccess)
			System::SetLastError(ERROR_UNEXP_NET_ERR);
	}

	//Check the data we got back is what was sent
	if (bSuccess) {
		char* pReplyData = (char*) pEchoReply->Data;
		for (int i=0; i<nPacketSize && bSuccess; i++)
			bSuccess = (pReplyData[i] == 'E');

		if (!bSuccess)
			System::SetLastError(ERROR_UNEXP_NET_ERR);
	}

	//Close the ICMP handle
	sm_pIcmpCloseHandle(hIP);

	if (bSuccess) {
		//Ping was successful, copy over the pertinent info
		//into the return structure
		pr.Address.S_un.S_addr = pEchoReply->Address;
		pr.RTT = pEchoReply->RoundTripTime;
	}

	//Free up the memory we allocated
	delete [] pBuf;
	delete [] pReply;

	//return the status
	return bSuccess;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线中文字幕一区| 日韩视频在线你懂得| 亚洲精品乱码久久久久久久久| 成+人+亚洲+综合天堂| 国产精品二三区| 91蜜桃网址入口| 亚洲图片一区二区| 欧美一级高清大全免费观看| 精品一区二区三区的国产在线播放| 久久综合成人精品亚洲另类欧美| 国产不卡视频一区| 亚洲视频在线一区二区| 欧美色老头old∨ideo| 蜜臀精品久久久久久蜜臀 | 国产精品久久久久久久久免费丝袜| 北岛玲一区二区三区四区| 亚洲人成精品久久久久| 欧美日韩国产在线播放网站| 麻豆精品一区二区三区| 欧美国产精品劲爆| 欧洲日韩一区二区三区| 理论片日本一区| 亚洲国产精品二十页| 欧洲av一区二区嗯嗯嗯啊| 蜜臀av一区二区| 日本一区二区三区国色天香 | 99re免费视频精品全部| 亚洲国产另类av| 久久网站热最新地址| 91网站在线播放| 日韩激情中文字幕| 国产女主播视频一区二区| 欧美中文一区二区三区| 精品制服美女丁香| 亚洲欧洲三级电影| 91麻豆精品91久久久久同性| 国内精品免费在线观看| 一区二区三区在线免费观看| 日韩欧美二区三区| 99久久99久久精品国产片果冻 | 亚洲成人综合视频| 久久久久九九视频| 欧美丝袜丝交足nylons| 国产成+人+日韩+欧美+亚洲| 亚洲成av人片在线观看| 国产日韩欧美在线一区| 欧美狂野另类xxxxoooo| 顶级嫩模精品视频在线看| 性久久久久久久久| 国产精品久久久久影院老司| 欧美一区二区私人影院日本| 99久久精品国产麻豆演员表| 激情偷乱视频一区二区三区| 一区二区三区在线影院| 久久久久久9999| 欧美精品aⅴ在线视频| 成人免费不卡视频| 麻豆视频观看网址久久| 夜夜嗨av一区二区三区四季av| 久久这里只有精品视频网| 欧美性猛交xxxx乱大交退制版| 国产成人夜色高潮福利影视| 亚洲成人一区在线| 中文字幕一区二区在线播放| 欧美本精品男人aⅴ天堂| 91极品视觉盛宴| 福利一区福利二区| 久久国产视频网| 亚洲gay无套男同| 中文字幕一区二区三区不卡 | 精品欧美乱码久久久久久1区2区| 91福利国产成人精品照片| 国产成人亚洲综合色影视| 美女网站视频久久| 亚洲成a人v欧美综合天堂| 亚洲欧美日本韩国| 欧美国产精品中文字幕| 26uuu精品一区二区在线观看| 欧美男男青年gay1069videost| 色综合久久综合中文综合网| 国产成人免费av在线| 久久97超碰色| 日韩成人一区二区三区在线观看| 亚洲综合在线视频| 亚洲天堂福利av| 国产精品美女久久久久aⅴ国产馆| 2020国产精品久久精品美国| 日韩一级视频免费观看在线| 欧美日韩视频在线第一区| 欧美亚洲国产一区二区三区va | 久久亚洲影视婷婷| 欧美一区二区私人影院日本| 欧美日韩免费一区二区三区 | 国产一区在线不卡| 久久精品国产秦先生| 天天操天天综合网| 亚洲大型综合色站| 性感美女极品91精品| 亚洲综合色成人| 一级日本不卡的影视| 亚洲免费色视频| 亚洲女同女同女同女同女同69| 亚洲欧美自拍偷拍色图| 国产精品乱人伦一区二区| 中文字幕不卡在线播放| 国产日韩欧美a| 中文字幕国产一区二区| 中文字幕av一区二区三区高| 日本一区二区三区电影| 日本一区二区免费在线观看视频| xnxx国产精品| 久久精品视频在线免费观看| 国产亚洲欧美在线| 中文子幕无线码一区tr| 国产精品麻豆欧美日韩ww| 国产精品高潮久久久久无| 国产精品一区一区三区| 国产在线精品一区二区三区不卡| 美女脱光内衣内裤视频久久影院| 青青草国产精品亚洲专区无| 在线国产亚洲欧美| 国产精品久久久久久久久快鸭| 91精品视频网| 日韩美一区二区三区| 欧美精品一区在线观看| 国产日韩成人精品| 国产精品你懂的在线| 亚洲欧美激情小说另类| 亚洲丶国产丶欧美一区二区三区| 秋霞电影一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久91精品久久久久久秒播| 国产一区二区三区国产| 大桥未久av一区二区三区中文| 91在线云播放| 色爱区综合激月婷婷| 91麻豆精品国产91久久久久久| 2021中文字幕一区亚洲| 国产精品全国免费观看高清| 一区二区成人在线观看| 日本aⅴ亚洲精品中文乱码| 国产一区二区三区最好精华液| 成人精品高清在线| 在线观看欧美黄色| 日韩女优毛片在线| 国产精品欧美一级免费| 亚洲成年人影院| 国产一区二区三区综合| 91网页版在线| 日韩一区二区三区三四区视频在线观看| 精品国产三级电影在线观看| 国产精品网站在线观看| 亚洲成人自拍偷拍| 国产精品一区二区三区四区| 91亚洲午夜精品久久久久久| 欧美高清视频不卡网| 国产欧美视频一区二区| 亚洲激情在线激情| 紧缚捆绑精品一区二区| 91在线国产福利| 欧美一区二区精品在线| 国产精品午夜在线观看| 亚洲1区2区3区视频| 国产乱码精品一品二品| 色噜噜狠狠色综合欧洲selulu| 日韩一级欧美一级| 亚洲欧美自拍偷拍色图| 欧美a一区二区| 99国产精品国产精品毛片| 欧美一级电影网站| 亚洲三级在线观看| 精品一区二区久久| 在线视频国产一区| 国产日韩欧美精品一区| 污片在线观看一区二区| 成人av第一页| 欧美电视剧在线观看完整版| 亚洲蜜臀av乱码久久精品蜜桃| 国精产品一区一区三区mba桃花 | 亚洲日本丝袜连裤袜办公室| 美美哒免费高清在线观看视频一区二区 | 懂色av一区二区三区免费看| 欧美日韩黄色影视| 国产精品福利电影一区二区三区四区| 日韩av电影天堂| 94-欧美-setu| 久久先锋影音av| 天天av天天翘天天综合网色鬼国产| 丰满少妇在线播放bd日韩电影| 欧美日韩久久一区| 亚洲视频一区二区在线观看| 久久激情五月激情| 欧美裸体bbwbbwbbw| 亚洲视频资源在线| 国产不卡视频一区二区三区| 日韩免费高清av| 亚洲电影一级黄| 色激情天天射综合网| 日本一区二区电影| 韩国成人福利片在线播放|