模擬實現Ping

2021-08-25 19:21:28 字數 2231 閱讀 7889

ping (packet internet groper),網際網路包探索器,用於測試網路連線量的程式

ping傳送乙個icmp(internet control messages protocol)即網際網路信報控制協議;

回聲請求訊息給目的地並報告是否收到所希望的icmpecho (icmp回聲應答)。它是用來檢查網路是否通暢或者網路連線速度的命令。

作為乙個生活在網路上的管理員或者黑客來說,ping命令是第乙個必須掌握的dos命令

它所利用的原理是這樣的:利用網路上機器ip位址的唯一性,給目標ip位址傳送乙個資料報,再要求對方返回乙個同樣大小的資料報來確定兩台網路機器是否連線相通,時延是多少。

ping指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強行大量遠端執行ping命令搶占你的網路資源,導致系統變慢,網速變慢。嚴禁ping入侵作為大多數防火牆的乙個基本功能提供給使用者進行選擇。通常的情況下你如果不用作伺服器或者進行網路測試,可以放心的選中它,保護你的電腦。

**塊:(解釋都在注釋裡)

#include#include#include#include#include#include#include#include#include#include#include#define buf_sz 1024

#define pack_len 56

int sendnum=0;//發包的編號

int recvnum=0;

char sendpack[buf_sz];//包的大小

char recvpack[buf_sz];

struct sockaddr_in from;//收來自**的包

//以毫秒為單位求出間隔時間

//timeval 兩個引數 tv_sec 秒 tv_usec 微秒

long diftime(const struct timeval*end,const struct timeval*_begin )

unsigned short chksum(unsigned short *addr,int len)//校驗和

//如果是奇數會剩下乙個

if(len==1)

//高16位加上 低16位

ret=(ret>>16)+(ret&0xffff);

ret+=(ret>>16);//處理溢位情況

//取反

return (unsigned short )~ret;

}int pack(int num,pid_t pid)

void unpack(char*buf,int len ,pid_t pid)//解包函式

void recv_packet(int sfd,pid_t pid)

void send_packet(int sfd,pid_t pid,struct sockaddr_in ad)

int main(int argc,char*argv)

//位址拷貝

memcpy((char*)&addr,(char*)pent->h_addr,pent->h_length);

} //原始套接字sock_raw

int sfd=socket(pf_inet,sock_raw,ipproto_icmp);

if(sfd==-1)

ad.sin_family=af_inet;

ad.sin_addr=addr;

pid_t pid=getpid();

printf("pid= %d ",pid);

printf("ping %s (%s) %d bytes of data.\n",argv[1],inet_ntoa(ad.sin_addr),pack_len);

while(1)

printf("%s \n",inet_ntoa(addr));

/*struct timeval begin;

gettimeofday(&begin,null);//微秒級別

sleep(1);

struct timeval end;

gettimeofday(&end,null);

long ret=diftime(&end,&begin);

//int ret=(end.tv_sec - begin.tv_sec)*1000+(end.tv_sec-begin.tv_sec)/1000;

printf("ret :%d \n",ret);*/

}

模擬實現Spring IOC

通過在類上標註 registration 註冊進容器,injection從容器注入物件 容器類 public class springcontainer else bean.setbeanclass c mappropsmap new hashmap 處理注入屬性 field props c.get...

模擬實現strcmp

函式簡介 原型 int strcmp const char s1,const char s2 所在標頭檔案 string.h 功能 比較字串s1和s2。一般形式 strcmp 字串1,字串2 說明 當s1注意不是 1 當s1 s2時,返回值 0 當s1 s2時,返回正數 注意不是1 如下 int m...

模擬實現strncat

模擬實現strncat 在系統庫函式中,存在strncat這個函式,它用於字串的追加,就是在乙個字串後面再追加乙個字串,它的函式原型為 char strncat char strdest,const char strsource,size t count 在其中,strdest為目標字串,strso...