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

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

?? ping.c

?? ping 原碼
?? C
字號:
//
// PING.C -- Ping program using ICMP and RAW Sockets
//

#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>

#include "ping.h"

// Internal Functions
void Ping(LPCSTR pstrHost);
void ReportError(LPCSTR pstrFrom);
int  WaitForEchoReply(SOCKET s);
u_short in_cksum(u_short *addr, int len);

// ICMP Echo Request/Reply functions
int		SendEchoRequest(SOCKET, LPSOCKADDR_IN);
DWORD	RecvEchoReply(SOCKET, LPSOCKADDR_IN, u_char *);


// main()
void main(int argc, char **argv)
{
    WSADATA wsaData;
    WORD wVersionRequested = MAKEWORD(1,1);
    int nRet;

	// Check arguments
    if (argc != 2)
    {
		fprintf(stderr,"\nUsage: ping hostname\n");
		return;
    }

	// Init WinSock
    nRet = WSAStartup(wVersionRequested, &wsaData);
    if (nRet)
    {
		fprintf(stderr,"\nError initializing WinSock\n");
		return;
    }

	// Check version
	if (wsaData.wVersion != wVersionRequested)
	{
		fprintf(stderr,"\nWinSock version not supported\n");
		return;
	}

	// Go do the ping
	Ping(argv[1]);

	// Free WinSock
    WSACleanup();
}


// Ping()
// Calls SendEchoRequest() and
// RecvEchoReply() and prints results
void Ping(LPCSTR pstrHost)
{
	SOCKET	  rawSocket;
	LPHOSTENT lpHost;
	struct    sockaddr_in saDest;
	struct    sockaddr_in saSrc;
	DWORD	  dwTimeSent;
	DWORD	  dwElapsed;
	u_char    cTTL;
	int       nLoop;
	int       nRet;

	// Create a Raw socket
	rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
	if (rawSocket == SOCKET_ERROR) 
	{
		ReportError("socket()");
		return;
	}
	
	// Lookup host
	lpHost = gethostbyname(pstrHost);
	if (lpHost == NULL)
	{
		fprintf(stderr,"\nHost not found: %s\n", pstrHost);
		return;
	}
	
	// Setup destination socket address
	saDest.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
	saDest.sin_family = AF_INET;
	saDest.sin_port = 0;

	// Tell the user what we're doing
	printf("\nPinging %s [%s] with %d bytes of data:\n",
				pstrHost,
				inet_ntoa(saDest.sin_addr),
				REQ_DATASIZE);

	// Ping multiple times
	for (nLoop = 0; nLoop < 4; nLoop++)
	{
		// Send ICMP echo request
		SendEchoRequest(rawSocket, &saDest);

		// Use select() to wait for data to be received
		nRet = WaitForEchoReply(rawSocket);
		if (nRet == SOCKET_ERROR)
		{
			ReportError("select()");
			break;
		}
		if (!nRet)
		{
			printf("\nTimeOut");
			break;
		}

		// Receive reply
		dwTimeSent = RecvEchoReply(rawSocket, &saSrc, &cTTL);

		// Calculate elapsed time
		dwElapsed = GetTickCount() - dwTimeSent;
		printf("\nReply from: %s: bytes=%d time=%ldms TTL=%d", 
               inet_ntoa(saSrc.sin_addr), 
			   REQ_DATASIZE,
               dwElapsed,
               cTTL);
	}
	printf("\n");
	nRet = closesocket(rawSocket);
	if (nRet == SOCKET_ERROR)
		ReportError("closesocket()");
}


// SendEchoRequest()
// Fill in echo request header
// and send to destination
int SendEchoRequest(SOCKET s,LPSOCKADDR_IN lpstToAddr) 
{
	static ECHOREQUEST echoReq;
	static nId = 1;
	static nSeq = 1;
	int nRet;

	// Fill in echo request
	echoReq.icmpHdr.Type		= ICMP_ECHOREQ;
	echoReq.icmpHdr.Code		= 0;
	echoReq.icmpHdr.Checksum	= 0;
	echoReq.icmpHdr.ID			= nId++;
	echoReq.icmpHdr.Seq			= nSeq++;

	// Fill in some data to send
	for (nRet = 0; nRet < REQ_DATASIZE; nRet++)
		echoReq.cData[nRet] = ' '+nRet;

	// Save tick count when sent
	echoReq.dwTime				= GetTickCount();

	// Put data in packet and compute checksum
	echoReq.icmpHdr.Checksum = in_cksum((u_short *)&echoReq, sizeof(ECHOREQUEST));

	// Send the echo request  								  
	nRet = sendto(s,						/* socket */
				 (LPSTR)&echoReq,			/* buffer */
				 sizeof(ECHOREQUEST),
				 0,							/* flags */
				 (LPSOCKADDR)lpstToAddr, /* destination */
				 sizeof(SOCKADDR_IN));   /* address length */

	if (nRet == SOCKET_ERROR) 
		ReportError("sendto()");
	return (nRet);
}


// RecvEchoReply()
// Receive incoming data
// and parse out fields
DWORD RecvEchoReply(SOCKET s, LPSOCKADDR_IN lpsaFrom, u_char *pTTL) 
{
	ECHOREPLY echoReply;
	int nRet;
	int nAddrLen = sizeof(struct sockaddr_in);

	// Receive the echo reply	
	nRet = recvfrom(s,					// socket
					(LPSTR)&echoReply,	// buffer
					sizeof(ECHOREPLY),	// size of buffer
					0,					// flags
					(LPSOCKADDR)lpsaFrom,	// From address
					&nAddrLen);			// pointer to address len

	// Check return value
	if (nRet == SOCKET_ERROR) 
		ReportError("recvfrom()");

	// return time sent and IP TTL
	*pTTL = echoReply.ipHdr.TTL;
	return(echoReply.echoRequest.dwTime);   		
}

// What happened?
void ReportError(LPCSTR pWhere)
{
	fprintf(stderr,"\n%s error: %d\n",
		WSAGetLastError());
}


// WaitForEchoReply()
// Use select() to determine when
// data is waiting to be read
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));
}


//
// Mike Muuss' in_cksum() function
// and his comments from the original
// ping program
//
// * Author -
// *	Mike Muuss
// *	U. S. Army Ballistic Research Laboratory
// *	December, 1983

/*
 *			I N _ C K S U M
 *
 * Checksum routine for Internet Protocol family headers (C Version)
 *
 */
u_short in_cksum(u_short *addr, int len)
{
	register int nleft = len;
	register u_short *w = addr;
	register u_short answer;
	register int sum = 0;

	/*
	 *  Our algorithm is simple, using a 32 bit accumulator (sum),
	 *  we add sequential 16 bit words to it, and at the end, fold
	 *  back all the carry bits from the top 16 bits into the lower
	 *  16 bits.
	 */
	while( nleft > 1 )  {
		sum += *w++;
		nleft -= 2;
	}

	/* mop up an odd byte, if necessary */
	if( nleft == 1 ) {
		u_short	u = 0;

		*(u_char *)(&u) = *(u_char *)w ;
		sum += u;
	}

	/*
	 * add back carry outs from top 16 bits to low 16 bits
	 */
	sum = (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */
	sum += (sum >> 16);			/* add carry */
	answer = ~sum;				/* truncate to 16 bits */
	return (answer);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777亚洲妇女| 日本道精品一区二区三区 | 国产精品传媒入口麻豆| 九九九久久久精品| 精品88久久久久88久久久 | 国产精品香蕉一区二区三区| 久久综合一区二区| k8久久久一区二区三区| 一区二区三区国产精品| 91精品在线一区二区| 久久国产人妖系列| 国产精品国产三级国产aⅴ原创 | 日日摸夜夜添夜夜添国产精品| 7777精品伊人久久久大香线蕉完整版| 蜜桃久久精品一区二区| 国产精品久久久久久久久果冻传媒 | 色天天综合色天天久久| 免费欧美高清视频| 精品毛片乱码1区2区3区| 91网站在线播放| 国产在线国偷精品产拍免费yy| 久久精品夜色噜噜亚洲a∨| 91麻豆精品国产自产在线| 91九色02白丝porn| 99国产欧美久久久精品| 精品一区二区三区免费毛片爱| 亚洲成人免费在线| 亚洲免费观看在线观看| 国产精品久久久一区麻豆最新章节| 欧美一区二区成人6969| 欧美日韩在线播放一区| 欧美亚洲愉拍一区二区| 95精品视频在线| 91麻豆精品秘密| 色婷婷久久综合| 在线亚洲一区二区| 欧美色大人视频| 欧美一区午夜视频在线观看| 91久久久免费一区二区| 欧美日韩亚洲综合一区| 日韩亚洲欧美一区| 国产精品久久久久毛片软件| 国产精品久久久久久一区二区三区 | 欧美一区午夜精品| 精品国产自在久精品国产| 久久久www成人免费毛片麻豆| 欧美激情一区二区三区| 亚洲日本中文字幕区| 亚洲精品午夜久久久| 日韩中文字幕麻豆| 久久99久久99精品免视看婷婷| 国产精品一区在线| 欧美四级电影在线观看| 91.xcao| 国产精品久久久一本精品| 日韩国产欧美在线视频| 成人av在线播放网站| 538在线一区二区精品国产| 精品国产第一区二区三区观看体验 | 精品久久免费看| 亚洲香蕉伊在人在线观| 岛国精品在线观看| 日韩欧美国产1| 国产视频一区二区在线| 亚洲欧美日韩系列| 成人免费高清在线| 久久亚洲精品小早川怜子| 五月开心婷婷久久| 91精品国产色综合久久不卡电影| 亚洲人成影院在线观看| 东方欧美亚洲色图在线| 久久九九全国免费| 粉嫩嫩av羞羞动漫久久久| 欧美激情在线一区二区| 成人av在线播放网站| 中文字幕在线视频一区| 99久久国产免费看| 国产精品久久久久久久午夜片| 国产一区高清在线| 久久久久久久久97黄色工厂| 国产一二精品视频| 国产精品麻豆网站| 7777精品伊人久久久大香线蕉的 | 色综合久久99| 午夜久久久久久久久久一区二区| 6080国产精品一区二区| 亚洲精品成人少妇| 亚洲h精品动漫在线观看| 欧美在线观看视频在线| 婷婷夜色潮精品综合在线| 日韩欧美国产一区二区三区| 国产成a人亚洲精品| 一区二区三区中文字幕精品精品| 欧美色老头old∨ideo| 久久精品国产亚洲高清剧情介绍| 久久欧美一区二区| 欧美年轻男男videosbes| 成人av在线网站| 黄色日韩三级电影| 五月天激情综合网| 一区二区三国产精华液| 99精品视频一区二区| 国产精品欧美综合在线| 欧美日韩激情在线| 丁香桃色午夜亚洲一区二区三区| 国产精品美女一区二区三区| 欧美高清激情brazzers| 欧美亚洲综合一区| 色婷婷av一区二区三区gif| 99久久99久久久精品齐齐| 国产一区二区三区四区在线观看| 五月天欧美精品| 亚洲欧美日韩系列| 一区二区中文字幕在线| 日韩一卡二卡三卡四卡| 精品一区二区三区在线播放视频| 亚洲乱码中文字幕| 亚洲视频一区二区在线观看| 中文字幕av资源一区| 欧美经典一区二区三区| 国产欧美综合在线观看第十页| 国产日产欧美精品一区二区三区| 久久精品欧美日韩精品 | 91麻豆精品一区二区三区| 不卡影院免费观看| 91在线码无精品| 在线观看区一区二| 亚洲精品在线三区| 国产视频一区二区在线观看| 一区二区高清在线| 久久99久久久欧美国产| 国产成人精品亚洲午夜麻豆| 91网上在线视频| 日韩亚洲欧美在线| 亚洲综合另类小说| 乱一区二区av| 色香色香欲天天天影视综合网| 欧美三级日韩在线| 中文字幕一区二区不卡| 九一久久久久久| 中文字幕欧美国产| 久久99国内精品| 色播五月激情综合网| 日韩欧美一区二区视频| 亚洲伦理在线免费看| 国产精品99久久久久久似苏梦涵 | 久久99精品国产麻豆不卡| 欧美中文字幕一二三区视频| 国产精品看片你懂得| 国产成人av电影在线播放| 国产91精品精华液一区二区三区| 在线观看国产一区二区| 欧美激情综合五月色丁香| 经典一区二区三区| 26uuu欧美| 成人黄色免费短视频| 国产午夜精品理论片a级大结局| 久久精品国产亚洲高清剧情介绍| 在线成人免费观看| 麻豆精品新av中文字幕| 久久久久99精品一区| 成人精品国产福利| 亚洲欧美国产77777| 欧美日韩国产综合久久| 美国三级日本三级久久99| 日韩欧美在线不卡| 国产真实乱子伦精品视频| 亚洲品质自拍视频网站| 91精品国产综合久久小美女| 国产成人av电影在线| 一片黄亚洲嫩模| 国产欧美一区二区精品忘忧草| 色天使色偷偷av一区二区| 午夜日韩在线观看| 国产精品天天看| 91精品国产品国语在线不卡| 成人黄色免费短视频| 美脚の诱脚舐め脚责91 | 日韩欧美黄色影院| 91亚洲精品久久久蜜桃| 国产乱码精品一品二品| 首页国产欧美日韩丝袜| 亚洲精品少妇30p| 欧美国产精品一区二区三区| 91精品国产综合久久小美女| 一本到一区二区三区| 亚洲色图在线视频| 国产亚洲欧美一级| 日韩午夜激情av| 91浏览器打开| 99久久精品国产一区二区三区| 美女一区二区久久| 美女在线一区二区| 精品一区二区三区香蕉蜜桃| 美女国产一区二区| 国产一区二区精品久久99| 精品一区二区影视| 久久99日本精品| 激情丁香综合五月| 成人app网站|