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

  • 大小: 1.1MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-08-30
  • 語(yǔ)言: 其他
  • 標(biāo)簽: ping??socket??

資源簡(jiǎn)介

基于socket的網(wǎng)絡(luò)編程技術(shù),用到SOCK_RAW的原始套接字類型。里面對(duì)簡(jiǎn)單ICMP協(xié)議和IP協(xié)議有著很完整的詮釋和定義。可以交流zhaquanmin@163.com

資源截圖

代碼片段和文件信息

//?SOCK_RAW.cpp?:?Defines?the?entry?point?for?the?console?application.
//?在project->setting->Debug中program?arguments輸入IP地址???測(cè)試程序:127.0.0.1

#include?
#include?
#include?
#include?“PING.h“


//函數(shù)聲明
void?Ping(LPCSTR?pstrHost);
void?ReportError(LPCSTR?pstrFrom);
int?WaitForEchoReply(SOCKET?s);
u_short?in_cksum(u_short?*addrint?len);



//ICMP回送請(qǐng)求和應(yīng)答函數(shù)聲明
int?SendEchoRequest(SOCKETLPSOCKADDR_IN);
DWORD?RecvEchoReply(SOCKETLPSOCKADDR_INu_char*);



//主程序
void?main(int?argcchar?**argv)
{
??WSADATA?wsaData;
??WORD?wVersionRequested=MAKEWORD(11);???//Winsock1.1
??int?nRet;
??
??//命令行參考檢查
??if(argc!=2)
??{
??fprintf(stderr“\nUsage:ping?hostname\n“);
??return;
??}
??
??//初始化Winsock
??nRet=WSAStartup(wVersionRequested&wsaData);
??if(nRet)
??{
??fprintf(stderr“\nError?initializing?Winsock\n“);
??}
??
??//Winsock版本檢查
??if(wsaData.wVersion!=wVersionRequested)
??{
??fprintf(stderr“\nWinsock?version?not?supported\n“);
??return;
??}

??//調(diào)用Ping函數(shù)
??Ping(argv[1]);

??//釋放Winsock
??WSACleanup();
}



///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//Ping()函數(shù)
//調(diào)用SendEchoRequest()和RecvEchoReply()函數(shù)并輸出結(jié)果
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;

//創(chuàng)建一個(gè)原始套接口
rawSocket=socket(AF_INETSOCK_RAWIPPROTO_ICMP);
????if(rawSocket==SOCKET_ERROR)
{
????????ReportError(“socket()“);
????????return;
}

????//根據(jù)主機(jī)名查詢主機(jī)地址
// lpHost=gethostbyname(pstrHost);
saDest.sin_addr.s_addr?=?inet_addr(pstrHost);
????//根據(jù)主機(jī)地址查詢主機(jī)名
lpHost=gethostbyaddr((char?*)&saDest.sin_addr4AF_INET);
if(lpHost==NULL)
????{
fprintf(stderr“\nHost?not?found:%\n“pstrHost);
return;
}


//設(shè)置目標(biāo)套接口地址
saDest.sin_addr.s_addr=*((u_long?FAR*)(lpHost->h_addr));
saDest.sin_family=AF_INET;
saDest.sin_port=0;


//輸出Ping程序的提示信息例如進(jìn)行本機(jī)Ping時(shí),輸出:Pinging?localhost?[127.0.0.1]?with?32?bytes?of?data:
printf(“\nPinging??localhost?srvhostname?%s?to?desthostIp?%s?[$s]?with?%d?bytes?of?data:\n“
??????lpHost->h_name
??inet_ntoa(saDest.sin_addr)
??REQ_DATASIZE);


//控制Ping執(zhí)行的次數(shù)
for(nLoop=0;nLoop<4;nLoop++)
{

//發(fā)送ICMP回送請(qǐng)求
SendEchoRequest(rawSocket&saDest);

//使用select()等待接收回送的數(shù)據(jù)
nRet=WaitForEchoReply(rawSocket);
if(nRet==SOCKET_ERROR)
{
ReportError(“select()“);
break;
}
if(!nRet)
{
????printf(“\nTimeOut“);?????//輸出超時(shí)提示
break;
}

//接收應(yīng)答
dwTimeSent=RecvEchoReply(rawSocket&saSrc&cTTL);

//計(jì)算傳輸時(shí)間,并輸出提示信息。如:Reply?from:127.0.0.1:bytes=32time=0ms?TTL=128
????????dwElapsed=GetTickCount()-dwTimeSent;
printf(“\nReply?from:?%s:?bytes=%d?time=%ldms?TTL=%d“
????inet_ntoa(saSrc.sin_addr)
REQ_DATASIZE
dwElapsed
cTTL);
}

pri

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????155742??2009-08-10?17:19??ping\Debug\ping.exe

?????文件?????177612??2009-08-10?17:19??ping\Debug\ping.ilk

?????文件??????20888??2009-08-10?17:19??ping\Debug\ping.obj

?????文件????3570220??2009-08-10?17:19??ping\Debug\ping.pch

?????文件?????328704??2009-08-10?17:19??ping\Debug\ping.pdb

?????文件?????140288??2009-08-10?17:19??ping\Debug\vc60.idb

?????文件??????77824??2009-08-10?17:19??ping\Debug\vc60.pdb

?????目錄??????????0??2009-08-10?17:19??ping\Debug

?????文件???????5639??2009-07-30?21:21??ping\ping.cpp

?????文件???????3416??2009-08-10?17:18??ping\ping.dsp

?????文件????????533??2009-08-10?17:18??ping\ping.dsw

?????文件???????1509??2009-07-30?22:27??ping\PING.H

?????文件??????41984??2009-08-10?17:19??ping\ping.ncb

?????文件??????53760??2009-08-10?17:19??ping\ping.opt

?????文件???????1163??2009-08-10?17:19??ping\ping.plg

?????文件???????1220??2008-01-14?20:53??ping\ReadMe.txt

?????文件????????295??2008-01-14?20:53??ping\StdAfx.cpp

?????文件????????769??2008-01-14?20:53??ping\StdAfx.h

?????目錄??????????0??2009-08-10?17:19??ping

-----------?---------??----------?-----??----

??????????????4581566????????????????????19


評(píng)論

共有 條評(píng)論

相關(guān)資源