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

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

?? ping.cpp

?? “網絡安全技術實踐與代碼詳解”實例代碼
?? CPP
字號:

#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#pragma  comment (lib, "ws2_32.lib")

#define ICMP_ECHOREPLY	0  // ICMP回復應答
#define ICMP_ECHOREQ	8  // ICMP回應請求
#define REQ_DATASIZE 32		// 請求數據報大小

// 定義IP首部格式
typedef struct _IPHeader
{
	u_char  VIHL;			// 版本和首部長度
	u_char	ToS;			// 服務類型
	u_short	TotalLen;		// 總長度
	u_short	ID;			// 標識號
	u_short	Frag_Flags;		// 段偏移量
	u_char	TTL;			// 生存時間
	u_char	Protocol;		// 協議
	u_short	Checksum;		// 首部校驗和
	struct	in_addr SrcIP;	// 源IP地址
	struct	in_addr DestIP;	// 目的地址
}IPHDR, *PIPHDR;


// 定義ICMP首部格式
typedef struct _ICMPHeader
{
	u_char	Type;			// 類型
	u_char	Code;			// 代碼
	u_short	Checksum;		// 首部校驗和
	u_short	ID;				// 標識
	u_short	Seq;			// 序列號
	char	Data;			// 數據
}ICMPHDR, *PICMPHDR;

// 定義ICMP回應請求
typedef struct _ECHOREQUEST
{
	ICMPHDR icmpHdr;
	DWORD	dwTime;
	char	cData[REQ_DATASIZE];
}ECHOREQUEST, *PECHOREQUEST;

// 定義ICMP回應答復 
typedef struct _ECHOREPLY
{
	IPHDR	ipHdr;
	ECHOREQUEST	echoRequest;
	char    cFiller[256];
}ECHOREPLY, *PECHOREPLY;

// 計算校驗和
u_short checksum(u_short *buffer, int len)
{
	register int nleft = len;
	register u_short *w = buffer;
	register u_short answer;
	register int sum = 0;
    // 使用32bit的累加器,進行16bit的反饋計算
	while( nleft > 1 )  {
		sum += *w++;
		nleft -= 2;
	}
	// 補全奇數位
	if( nleft == 1 ) {
		u_short	u = 0;

		*(u_char *)(&u) = *(u_char *)w ;
		sum += u;
	}
   // 將反饋的16bit從高位移至地位
	sum = (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */
	sum += (sum >> 16);			/* add carry */
	answer = ~sum;				/* truncate to 16 bits */
	return (answer);
}



// 發送回應請求函數
int SendEchoRequest(SOCKET s,struct sockaddr_in *lpstToAddr) 
{
	static ECHOREQUEST echoReq;
	static nId = 1;
	static nSeq = 1;
	int nRet;

	// 填充回應請求消息
	echoReq.icmpHdr.Type		= ICMP_ECHOREQ;
	echoReq.icmpHdr.Code		= 0;
	echoReq.icmpHdr.Checksum	= 0;
	echoReq.icmpHdr.ID			= nId++;
	echoReq.icmpHdr.Seq			= nSeq++;

	// 填充要發送的數據(隨便填寫)
	for (nRet = 0; nRet < REQ_DATASIZE; nRet++)
		echoReq.cData[nRet] = ' '+nRet;

	// 儲存發送的時間
	echoReq.dwTime = GetTickCount();

	// 計算回應請求的校驗和
	echoReq.icmpHdr.Checksum = checksum((u_short *)&echoReq, sizeof(ECHOREQUEST));

	// 發送回應請求  								  
	nRet = sendto(s,						// 建立起的套接字
				 (LPSTR)&echoReq,			// 發送的緩沖區內容
				 sizeof(ECHOREQUEST),
				 0,							// 標志位
				 (struct sockaddr*)lpstToAddr, // 發送的目標地址
				 sizeof(SOCKADDR_IN));   // 地址結構長度

	if (nRet == SOCKET_ERROR)
	{
		printf("sendto() error:%d\n",WSAGetLastError());
	}
	return (nRet);
}

// 接收應答回復并進行解析
DWORD RecvEchoReply(SOCKET s, LPSOCKADDR_IN lpsaFrom, u_char *pTTL) 
{
	ECHOREPLY echoReply;
	int nRet;
	int nAddrLen = sizeof(struct sockaddr_in);

	//接收應答回復	
	nRet = recvfrom(s,					// 接收的套接字
					(LPSTR)&echoReply,	// 接收的緩沖區
					sizeof(ECHOREPLY),	// 緩沖區長度
					0,					// 標識
					(LPSOCKADDR)lpsaFrom,	// 接收的地址
					&nAddrLen);			// 地址結構長度

	// 檢驗接收結果
	if (nRet == SOCKET_ERROR) 
	{
		printf("recvfrom() error:%d\n",WSAGetLastError());
	}
    // 記錄返回的TTL
	*pTTL = echoReply.ipHdr.TTL;
	//返回應答時間
	return(echoReply.echoRequest.dwTime);  		
}

// 等待回應答復,使用select機制
int WaitForEchoReply(SOCKET s)
{
	struct timeval timeout;
	fd_set readfds;

	readfds.fd_count = 1;
	readfds.fd_array[0] = s;
	timeout.tv_sec = 5;
    timeout.tv_usec = 0;

	return(select(1, &readfds, NULL, NULL, &timeout));
}

// Ping功能實現
void Ping(char *pstrHost)
{
	SOCKET	  rawSocket;
	LPHOSTENT lpHost;
	struct    sockaddr_in destIP;
	struct    sockaddr_in srcIP;
	DWORD	  dwTimeSent;
	DWORD	  dwElapsed;
	u_char    cTTL;
	int       nLoop;
	int       nRet;

	// 創建原始套接字,ICMP類型
	rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
	if (rawSocket == SOCKET_ERROR) 
	{
		printf("socket() error:%d\n",WSAGetLastError());
		return;
	}
	
	// 檢測目標主機
	lpHost = gethostbyname(pstrHost);
	if (lpHost == NULL)
	{
		printf("Host not found: %s\n", pstrHost);
		return;
	}
	
	// 設置目標機地址
	destIP.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
	destIP.sin_family = AF_INET;
	destIP.sin_port = 0;

	// 提示開始進行Ping
	printf("\nPinging %s with %d bytes of data:\n",
				inet_ntoa(destIP.sin_addr),
				REQ_DATASIZE);


	// 發起多次Ping測試
	for (nLoop = 0; nLoop < 4; nLoop++)
	{
		//發送ICMP回應請求
		SendEchoRequest(rawSocket, &destIP);

		// 使用select()等待回復的數據
		nRet = WaitForEchoReply(rawSocket);
		if (nRet == SOCKET_ERROR)
		{
			printf("select() error:%d\n",WSAGetLastError());
			break;
		}
		if (!nRet)
		{
			printf("\nRequest time out");
			break;
		}

		//接收回復
		dwTimeSent = RecvEchoReply(rawSocket, &srcIP, &cTTL);

		// 計算花費的時間
		dwElapsed = GetTickCount() - dwTimeSent;
		printf("\nReply from %s: bytes=%d time=%ldms TTL=%d", 
               inet_ntoa(srcIP.sin_addr), 
			   REQ_DATASIZE,
               dwElapsed,
               cTTL);
	}

	printf("\n");
	nRet = closesocket(rawSocket); // 關閉套接字,釋放資源
	if (nRet == SOCKET_ERROR)
	{
		printf("closesocket() error:%d\n",WSAGetLastError());
	}
}

void main(int argc, char **argv)
{
    WSADATA wsd;
    int nRet;

	// 檢測輸入的參數
    if (argc != 2)
    {
		printf("\nUsage: ping hostname\n");
		return;
    }
    // 初始化Winsock
	if (WSAStartup(MAKEWORD(1,1), &wsd) != 0)
    {
        printf("加載Winsock失敗!\n");
    }

	//開始Ping
	Ping(argv[1]);

	// 釋放Winsock資源
    WSACleanup();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天视频一区| 成人a级免费电影| 欧美日韩精品欧美日韩精品一| 亚洲女子a中天字幕| 色悠悠久久综合| 亚洲乱码中文字幕综合| 在线精品观看国产| 亚洲444eee在线观看| 91精品国产欧美一区二区18 | 久久美女高清视频| 国产精品18久久久久久久网站| 久久久精品国产免大香伊| 成人午夜视频在线观看| 专区另类欧美日韩| 欧美网站一区二区| 精品亚洲aⅴ乱码一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产宾馆实践打屁股91| 亚洲三级电影网站| 欧美日韩国产首页| 国产裸体歌舞团一区二区| 国产精品美女久久久久久久 | 一区二区三区小说| 在线不卡中文字幕| 国产综合久久久久影院| 亚洲图片激情小说| 欧美一级在线观看| 成人18视频日本| 手机精品视频在线观看| 欧美极品少妇xxxxⅹ高跟鞋 | 色综合久久久久综合| 午夜电影网一区| 久久人人爽人人爽| 欧美影院精品一区| 国产91在线看| 日韩电影免费一区| 综合色天天鬼久久鬼色| 精品国产一区二区三区不卡 | 午夜免费久久看| 中文字幕精品—区二区四季| 6080日韩午夜伦伦午夜伦| 成人污视频在线观看| 青青青伊人色综合久久| 日韩美女精品在线| 欧美精品一区二区久久婷婷| 欧美色国产精品| 成人三级伦理片| 久久精品国产亚洲高清剧情介绍| 亚洲免费看黄网站| 久久精品一二三| 欧美一级淫片007| 欧美色图第一页| gogo大胆日本视频一区| 极品少妇xxxx精品少妇偷拍| 亚洲r级在线视频| 亚洲免费观看视频| 中文字幕欧美日韩一区| 欧美成人精品3d动漫h| 欧美日韩精品一区二区三区四区 | 国产成人免费视频精品含羞草妖精| 亚洲一区二区视频| 亚洲少妇屁股交4| 国产午夜精品福利| www亚洲一区| 日韩精品一区二区三区中文不卡| 精品视频全国免费看| 色88888久久久久久影院野外| 成人一区二区三区视频| 国产很黄免费观看久久| 国产一区中文字幕| 国产一区久久久| 激情丁香综合五月| 久久爱另类一区二区小说| 日本欧美一区二区| 日韩中文字幕不卡| 日韩国产一区二| 日韩电影在线免费看| 免费精品视频在线| 久久国产精品第一页| 日韩精品欧美精品| 免费高清不卡av| 美国十次了思思久久精品导航| 日韩**一区毛片| 老司机一区二区| 国产一区二区网址| 成人激情av网| 99久久国产综合精品色伊| 92国产精品观看| 在线一区二区三区四区五区 | 最近日韩中文字幕| 夜色激情一区二区| 五月天激情小说综合| 日本亚洲欧美天堂免费| 麻豆免费精品视频| 国产精品一区二区在线观看网站| 成人免费视频视频在线观看免费 | 欧美日韩一级大片网址| 4hu四虎永久在线影院成人| 日韩一区二区三区精品视频| 久久五月婷婷丁香社区| 中文在线一区二区| 一区二区成人在线视频| 天堂精品中文字幕在线| 精品亚洲成a人在线观看| 成人夜色视频网站在线观看| 91丨九色丨国产丨porny| 欧美精品亚洲一区二区在线播放| 欧美一级淫片007| 国产精品久久毛片| 亚洲电影视频在线| 国产乱理伦片在线观看夜一区| 成人av电影在线播放| 欧美人牲a欧美精品| 26uuu精品一区二区| 亚洲精品久久久蜜桃| 美腿丝袜亚洲三区| 99天天综合性| 欧美一区二区大片| 伊人婷婷欧美激情| 激情综合色综合久久| 色综合天天在线| 欧美电影免费观看高清完整版在线| 国产精品国产三级国产普通话三级| 亚洲午夜久久久久久久久电影院 | 一本到不卡精品视频在线观看 | 国产精品中文字幕日韩精品| 色婷婷精品久久二区二区蜜臀av| 日韩欧美国产三级电影视频| 日韩伦理av电影| 国产一区二区三区最好精华液| 色综合天天综合网天天狠天天 | 日韩不卡一区二区三区| 成人福利电影精品一区二区在线观看| 精品视频在线视频| 国产精品国产三级国产aⅴ入口 | 亚洲色大成网站www久久九九| 青青青爽久久午夜综合久久午夜 | 国产精品自拍毛片| 欧美日韩高清影院| 亚洲同性同志一二三专区| 国产真实乱偷精品视频免| 欧美日韩亚洲国产综合| 国产精品不卡视频| 国产揄拍国内精品对白| 欧美片在线播放| 亚洲视频你懂的| 国产成人精品三级麻豆| 日韩精品中文字幕在线一区| 伊人婷婷欧美激情| av在线不卡观看免费观看| 久久影院午夜片一区| 免费观看一级欧美片| 欧美性大战久久| 亚洲视频你懂的| 99久久久久免费精品国产| 久久日韩粉嫩一区二区三区 | 大白屁股一区二区视频| 精品日韩一区二区三区| 亚洲高清久久久| 欧美亚洲图片小说| 亚洲综合视频网| 色天使色偷偷av一区二区| 国产精品久久久久久久久免费丝袜 | av影院午夜一区| 国产拍揄自揄精品视频麻豆| 精品午夜一区二区三区在线观看 | 欧美精品一区二区在线播放| 美腿丝袜亚洲色图| 精品久久一区二区三区| 青青草成人在线观看| 日韩三级高清在线| 美女久久久精品| 久久久久久久一区| 国产成人在线观看免费网站| 国产欧美一区二区精品久导航| 国产河南妇女毛片精品久久久| 久久久国际精品| 成人精品在线视频观看| 亚洲欧美一区二区在线观看| 99久久精品免费看| 亚洲一区免费观看| 6080国产精品一区二区| 精品亚洲免费视频| 中文乱码免费一区二区| 91麻豆福利精品推荐| 亚洲高清久久久| 精品国产1区二区| 岛国av在线一区| 亚洲天堂福利av| 欧美精品色综合| 国产剧情av麻豆香蕉精品| 国产精品三级在线观看| 91福利在线播放| 久久精品国产77777蜜臀| 国产偷v国产偷v亚洲高清| 91麻豆蜜桃一区二区三区| 日韩成人一区二区| 亚洲国产高清不卡| 欧美男男青年gay1069videost| 精品一区二区三区在线视频|