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

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

?? ppingdlg.cpp

?? ping的小程序
?? CPP
字號:
// ppingDlg.cpp : implementation file
//

#include "stdafx.h"
#include "pping.h"
#include "ppingDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define ICMP_ECHO 8     //ICMP請求響應
#define ICMP_REPLY 0    //ICMP響應
#define BUFSIZE 1024    //緩沖區的大小
#define TIMES 20        //默認ping的次數
#define TIMEOUT 100    //最長的等待時間為一秒

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
//求ICMP頭校驗和
WORD CheckSum(WORD *buffer,int size)
{

WORD cksum=0;
	while(size>1)
	{	
	
	cksum+=*buffer++;
	size-=sizeof(WORD);
	}
	if(size)
		cksum+=*(UCHAR*)buffer;
	cksum=(cksum>>16)+(cksum&0xffff);
	cksum+=(cksum>>16);
	return (~cksum);

}
////////////////
BOOL PingOnce(SOCKET hsock,CPpingDlg* pDlg)
{
char recvByte[BUFSIZE];
char sendByte[BUFSIZE];
int sendBytesCount;
int recvBytesCount;
int sendsize;
int recvsize;
int IPHeaderSize;
DWORD* ptime;
DWORD sendTime,recvTime;
struct IPHeader* pIP;
struct ICMPHeader* pICMP;
SOCKADDR_IN s_sockaddr;
SOCKADDR_IN d_sockaddr;
CString Info;
d_sockaddr.sin_family=AF_INET;
d_sockaddr.sin_addr=*(LPIN_ADDR)*(pDlg->m_lpHostEnt->h_addr_list);
pICMP=(ICMPHeader*)sendByte;
pICMP->type=ICMP_ECHO;
pICMP->code=0;
pICMP->ID=(WORD)GetCurrentProcessId();
pICMP->seq=0;
pICMP->checksum=0;
ptime=(DWORD*)(sendByte+sizeof(ICMPHeader));
sendTime=GetTickCount();//取發送的時刻
*ptime=sendTime;
sendsize=sizeof(ICMPHeader)+sizeof(DWORD);
//求ICMP的校驗和
pICMP->checksum=CheckSum((WORD*)pICMP,sendsize);
// 用socket發送數據報
sendBytesCount=sendto(hsock,(LPSTR)pICMP,sendsize,0,
					  (LPSOCKADDR)&d_sockaddr,sizeof(d_sockaddr));
//判斷傳送是否成功
	if(sendBytesCount==SOCKET_ERROR)
	{
		if(WSAGetLastError()==WSAETIMEDOUT)
			pDlg->m_ListInfo.InsertString(pDlg->m_ListInfo.GetCount(),"Request time out ...");
		return FALSE;	
	}
	if(sendBytesCount<sendsize)
		return FALSE;
	recvsize=sizeof(s_sockaddr);
	//接收響應數據報
	int timeout=1000;
	setsockopt(hsock,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,
		sizeof(timeout));
	try
	{
	recvBytesCount=recvfrom(hsock,recvByte,BUFSIZE,0,(LPSOCKADDR)&s_sockaddr,&recvsize);
	}
	catch(...)
	{pDlg->m_ListInfo.InsertString(pDlg->m_ListInfo.GetCount(),"request time out...");}
	//取接收到數據報的時刻
	
	
	recvTime=GetTickCount();
	//判斷接收過程之否有錯
	if(recvBytesCount==SOCKET_ERROR)
	{
	if(WSAGetLastError()==WSAETIMEDOUT)
		pDlg->m_ListInfo.InsertString(pDlg->m_ListInfo.GetCount(),"request time out...");
	return FALSE;
	}
	pIP=(IPHeader*)recvByte;
	//取IP頭的長度
	IPHeaderSize=(BYTE)((pIP->verlen<<4)>>2);
	if(recvBytesCount<IPHeaderSize+(int)sizeof(ICMPHeader))
		return FALSE;
	pICMP=(ICMPHeader*)(recvByte+IPHeaderSize);
	//判斷是否是響應的數據報
	if(pICMP->ID!=GetCurrentProcessId())
		return FALSE;
	//如果數據接收成功,則顯示數據
	Info.Format(":Bytes: %d time %d ms TTL: %d",recvBytesCount,
		recvTime-sendTime,(UINT)pIP->TTL);
	Info=inet_ntoa(*(LPIN_ADDR)*(pDlg->m_lpHostEnt->h_addr_list))+Info;
	Info="Reply from"+Info;
	pDlg->m_ListInfo.InsertString(pDlg->m_ListInfo.GetCount(),Info);
	return TRUE;

}

DWORD WINAPI DoPing(LPVOID lpparameter)
{
LPINFO temp=(LPINFO)lpparameter;
UINT times=0;
	while((temp->flag)&&(times<temp->times))
	{
	PingOnce(temp->hsock,(CPpingDlg*)(temp->pdlg));
	times++;
	}
	return 0;
}


/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPpingDlg dialog

CPpingDlg::CPpingDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPpingDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPpingDlg)
	m_Times = 20;
	m_IPAddr = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPpingDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPpingDlg)
	DDX_Control(pDX, IDC_LIST_INFO, m_ListInfo);
	DDX_Text(pDX, IDC_EDIT_TIMES, m_Times);
	DDX_Text(pDX, IDC_EDIT_IP, m_IPAddr);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPpingDlg, CDialog)
	//{{AFX_MSG_MAP(CPpingDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_PING, OnButtonPing)
	ON_BN_CLICKED(IDC_BUTTON_STOP, OnButtonStop)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPpingDlg message handlers

BOOL CPpingDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CPpingDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CPpingDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CPpingDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CPpingDlg::OnButtonPing() 
{
	// TODO: Add your control notification handler code here
	
	// TODO: Add your control notification handler code here
	CString strIP;
	protoent* lpproto;
	int proto;
	SOCKET hsock;
	int returncode;
	int timeout;
	CString Errmsg;
	DWORD ThreadID;
	DWORD code;
	//刪除m_ListInfo中的所有信息
	while(m_ListInfo.GetCount()!=0)
	m_ListInfo.DeleteString(m_ListInfo.GetTopIndex());
	//取得m_lpHostEnt
	if(!GetHostEnt())
	{
		Errmsg.Format("There is no this host computer!");
		m_ListInfo.InsertString(m_ListInfo.GetCount(),(LPCTSTR)Errmsg);
		return ;
	}
	//取得主機的地址
	strIP=inet_ntoa(*(LPIN_ADDR)*(m_lpHostEnt->h_addr_list));
	m_ListInfo.AddString("Ping"+strIP);
	m_ListInfo.InsertString(m_ListInfo.GetCount(),"Connecting...");
	//取得協議的類型
	lpproto=getprotobyname("icmp");
	if(lpproto==NULL)
	 proto=IPPROTO_ICMP;
	else
	 proto=lpproto->p_proto;
	//生成Socket句柄
	//	hsock=WSASocket(AF_INET,SOCK_RAW,proto,NULL,0,0);//必須用WSA_FLAG_OVERLAPPED,否則設置的
	//套接字選項RCVTIMEO不起作用,并且無限制等待
	hsock=WSASocket(AF_INET,SOCK_RAW,proto,NULL,0,WSA_FLAG_OVERLAPPED);
		if(hsock==INVALID_SOCKET)
		{
		Errmsg.Format("Socket error");
		m_ListInfo.InsertString(m_ListInfo.GetCount(),(LPCTSTR)Errmsg);
		return;
		}
	timeout=TIMEOUT;
	returncode=setsockopt(hsock,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,
		sizeof(timeout));
		if(returncode==SOCKET_ERROR)
		{
		Errmsg.Format("Socket error");
		m_ListInfo.InsertString(m_ListInfo.GetCount(),(LPCTSTR)Errmsg);
		return;
		}
		timeout=TIMEOUT;
	returncode=setsockopt(hsock,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,
		sizeof(timeout));
		if(returncode==SOCKET_ERROR)
		{
		Errmsg.Format("Socket error");
		m_ListInfo.InsertString(m_ListInfo.GetCount(),(LPCTSTR)Errmsg);
		return;
		}

		//對m_Info進行賦值
		m_Info.flag=TRUE;
		m_Info.hsock=hsock;
		m_Info.pdlg=this;
		//取得用戶設定的次數
		UpdateData(TRUE);
		if(m_Times<=0)
		
		m_Info.times=m_Times=TIMES;
		else
		m_Info.times=m_Times;
		UpdateData(FALSE);//對數據進行回顯
		//創建ping的線程
	if(!GetExitCodeThread(m_hThread,&code)||(code!=STILL_ACTIVE))
		m_hThread=CreateThread(NULL,0,DoPing,&m_Info,0,&ThreadID);
	if(m_hThread==NULL)
		MessageBox("Create thread ping failed!");
	
}

void CPpingDlg::OnButtonStop() 
{
	// TODO: Add your control notification handler code here
		DWORD code;
	//設置停止標志
	m_Info.flag=FALSE;
	Sleep(TIMEOUT);
	//如果線程還沒有停止,則強制它停止//INVALID_SOCKET//FD_ISSET
	if(GetExitCodeThread(m_hThread,&code))
		if(code==STILL_ACTIVE)
		{
		TerminateThread(m_hThread,0);
		CloseHandle(m_hThread);
		}

	
}

void CPpingDlg::OnOK() 
{
	// TODO: Add extra validation here
	OnButtonStop();

	
	CDialog::OnOK();
}

BOOL CPpingDlg::GetHostEnt()
{
	UpdateData(TRUE);
	//如果用戶輸入的數據是主機名
	m_lpHostEnt=gethostbyname((LPCSTR)m_IPAddr);
	if(m_lpHostEnt==NULL)
	{
	DWORD dwIP;
	dwIP=inet_addr((LPCSTR)m_IPAddr);
	//如果用戶輸入是IP地址
	m_lpHostEnt=gethostbyaddr((LPSTR)&dwIP,4,AF_INET);
	if(m_lpHostEnt==NULL)
		return FALSE;
	}
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级在线观看| 欧美丰满少妇xxxxx高潮对白| 日本午夜精品一区二区三区电影 | 日韩免费看的电影| 欧美精品tushy高清| 日韩欧美一区二区免费| 欧美成人r级一区二区三区| 精品国产乱码久久久久久久久| 日韩欧美激情在线| 国产欧美精品一区二区色综合 | 亚洲va欧美va天堂v国产综合| 亚洲黄色在线视频| 婷婷综合五月天| 美女一区二区视频| 福利一区二区在线| 色综合天天综合给合国产| 一本大道久久精品懂色aⅴ| 在线观看亚洲精品| 欧美一级高清大全免费观看| 日韩精品一区在线| 国产色产综合产在线视频| 国产精品天干天干在观线| 亚洲综合激情小说| 九色porny丨国产精品| 成人av电影观看| 在线观看视频欧美| 精品久久久网站| 国产精品久久久久久久久久久免费看| 伊人一区二区三区| 精品一区二区三区不卡 | 国产91在线观看丝袜| 色久优优欧美色久优优| 日韩精品专区在线影院重磅| 国产精品久久久久久久久晋中 | 在线视频中文字幕一区二区| 日韩一区二区影院| 亚洲特级片在线| 精品一区二区三区的国产在线播放| 成人开心网精品视频| 欧美精品精品一区| 综合欧美一区二区三区| 国产一区二三区| 欧美日韩高清在线播放| 亚洲国产激情av| 奇米影视在线99精品| av一区二区不卡| 精品久久久久99| 亚洲午夜精品网| 国产99久久久精品| 精品久久国产老人久久综合| 亚洲韩国精品一区| 一本大道av伊人久久综合| 久久久91精品国产一区二区精品 | 国产精品一区二区不卡| 777亚洲妇女| 亚洲三级在线观看| 福利一区福利二区| xnxx国产精品| 久久精品国产999大香线蕉| 色哟哟日韩精品| 中文字幕亚洲视频| 粉嫩蜜臀av国产精品网站| 久久综合网色—综合色88| 午夜精品免费在线| 欧美日韩一区三区四区| 亚洲一区二区三区四区不卡| 91国内精品野花午夜精品| 国产精品免费丝袜| 成人av在线电影| 国产精品乱码一区二三区小蝌蚪| 国产一区二区三区精品视频| 精品国产亚洲一区二区三区在线观看| 美国十次综合导航| 精品国产欧美一区二区| 极品少妇一区二区三区精品视频| 日韩午夜激情电影| 国产精一区二区三区| 久久久精品2019中文字幕之3| 国产一区二三区| 欧美国产综合色视频| 成人三级伦理片| 日韩理论片在线| 欧美日韩亚洲国产综合| 丝瓜av网站精品一区二区| 日韩一区二区免费高清| 精品一区二区三区在线观看| 久久精品一区二区三区不卡牛牛 | 精品国产3级a| 激情综合色综合久久| 亚洲国产精品v| 色婷婷国产精品| 日韩精品乱码av一区二区| 精品粉嫩aⅴ一区二区三区四区| 精品无码三级在线观看视频| 国产片一区二区| 色8久久精品久久久久久蜜| 亚洲高清在线精品| 久久综合久久综合亚洲| 色综合色综合色综合色综合色综合 | 精品国产免费一区二区三区四区| 九九热在线视频观看这里只有精品| 久久久综合网站| 一区二区三区免费看视频| 97久久超碰国产精品| 日日夜夜免费精品| 一区二区三区日本| 亚洲精品免费在线观看| 尤物在线观看一区| 亚洲三级在线免费| 亚洲精品福利视频网站| 亚洲男同1069视频| 亚洲欧美日韩国产综合在线| 亚洲丝袜制服诱惑| 中文字幕一区二区三区四区不卡 | 18欧美乱大交hd1984| 国产精品三级久久久久三级| 中文欧美字幕免费| 国产精品久久久久久久久免费丝袜| 国产精品免费网站在线观看| 国产精品久久午夜| ...xxx性欧美| 亚洲激情校园春色| 婷婷综合另类小说色区| 麻豆成人久久精品二区三区红 | a级精品国产片在线观看| 国产不卡一区视频| 91在线国内视频| 日本高清成人免费播放| 欧美喷水一区二区| 欧美videofree性高清杂交| 国产欧美日本一区视频| 亚洲激情校园春色| 免费av网站大全久久| 国产一区二区福利| 色www精品视频在线观看| 欧美日韩一区二区三区四区五区| 91精品国产综合久久久蜜臀图片| 久久天堂av综合合色蜜桃网| 国产精品麻豆久久久| 午夜电影久久久| 国产精品一区二区久久不卡| 日本精品免费观看高清观看| 欧美刺激午夜性久久久久久久 | 精品国产免费一区二区三区四区| 中文字幕欧美三区| 五月天丁香久久| 国产成人综合自拍| 欧美年轻男男videosbes| 欧美激情中文不卡| 天天色综合成人网| 成人性生交大合| 制服丝袜亚洲色图| 国产精品视频线看| 麻豆91在线看| 91影院在线观看| 欧美大片在线观看一区二区| 亚洲丝袜自拍清纯另类| 精品一区二区在线看| 日本电影亚洲天堂一区| 欧美精品一区二区三区高清aⅴ | 成人午夜av电影| 51精品秘密在线观看| 国产精品午夜电影| 裸体健美xxxx欧美裸体表演| 色老综合老女人久久久| 国产欧美精品日韩区二区麻豆天美| 亚洲一区二区三区美女| 成人动漫在线一区| 欧美精品一区二区三区很污很色的| 亚洲午夜一区二区三区| 成人18精品视频| 26uuu另类欧美亚洲曰本| 亚洲国产成人高清精品| 99视频精品全部免费在线| 久久一区二区三区四区| 奇米四色…亚洲| 欧美日韩日日夜夜| 亚洲精品成人天堂一二三| 不卡的av中国片| 日本一区二区成人| 国产成人自拍网| 久久日韩粉嫩一区二区三区| 麻豆国产精品777777在线| 欧美日韩国产区一| 香港成人在线视频| 精品视频在线免费观看| 一区二区三区中文免费| 色综合一个色综合亚洲| 亚洲伦在线观看| 97se亚洲国产综合自在线| 国产精品国产三级国产普通话三级 | 精品国产电影一区二区| 日韩av电影免费观看高清完整版 | 中文字幕一区二区三区视频| 国产精品一级黄| 久久久久久综合| 国产精品一区二区在线观看网站 | 日韩欧美精品在线| 久久精品国产亚洲a| 日韩欧美的一区|