資源簡介
C++網絡編程實例文件,里面包含各個章節的C++源碼。
第一章 網絡通信基礎
第二章 認識Windows編程模型
第三章 網絡基本應用在VC++中的實現
第四章 串口通信及其實例
第五章 應用層協議及編程實例
第六章 傳輸層協議及編程實例
第七章 網絡層協議和數據鏈路層
第八章 Internet通信原理以及編程實例
第九章 基于Windows API的虛擬終端實現
第十章 多線程網絡文件傳輸的設計與實現
第十一章 防火墻的設計與實現
第十二章 郵件轉發器
第十三章 telnet bbs

代碼片段和文件信息
?//?ICMP.cpp:?implementation?of?the?CICMP?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“RouteTrace.h“
#include?“ICMP.h“
#include?“ws2tcpip.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CICMP::CICMP()
{
winsock?=?0;
m_pIp?=?NULL;
m_pIcmp?=?NULL;
m_pIp?=?(IP_HEAD?*)new?BYTE[MAX_PACKET];
m_pIcmp?=?(ICMP_HEAD?*)new?BYTE[MAX_PACKET];
}
CICMP::~CICMP()
{
delete?[]?m_pIp;
delete?[]?m_pIcmp;
}
BOOL?CICMP::Initialize()
{
WSADATA?wsadata;
if(?WSAStartup(MAKEWORD(2?1)&wsadata)?)???
{
AfxMessageBox(“WSAStartup初始化失敗!“);
return?FALSE;
}
winsock=?WSASocket?(AF_INET?? //建立socket
???SOCK_RAW
???IPPROTO_ICMP
???NULL?00);
if(!winsock) {
AfxMessageBox(?“Socket創建失敗!“);
return?FALSE;
}
int?timeout?=5000;
setsockopt(winsockSOL_SOCKETSO_RCVTIMEO(char?*)&timeout???// 設置接收超時
sizeof(timeout));
timeout?=?5000;
setsockopt(winsockSOL_SOCKETSO_SNDTIMEO(char?*)&timeout????//設置發送超時
sizeof(timeout));
return?TRUE;
}
void?CICMP::Uninitialize()????????????????//釋放Socket
{
if(winsock)
closesocket(winsock);
WSACleanup();
}
USHORT?CICMP::CheckSum(USHORT?*buffer?int?size)??//計算校驗和
{
??unsigned?long?cksum?=?0;
??while(size?>?1)?{
cksum+=*buffer++;
size?-=sizeof(USHORT);
??}
??
??if(size?)?{
cksum?+=?*(UCHAR*)buffer;
??}
??cksum?=?(cksum?>>?16)?+?(cksum?&?0xffff);
??cksum?+=?(cksum?>>16);
??return?(USHORT)(~cksum);
}
BOOL?CICMP::SendICMPPack(char?*pAddr)
{
sockaddr_in?sockAddr;
memset((void?*)&sockAddr0sizeof(sockAddr));
sockAddr.sin_family?=?AF_INET;
sockAddr.sin_port?=?0;
sockAddr.sin_addr.S_un.S_addr=inet_addr(pAddr);
return?SendICMPPack(&sockAddr);
}
//--------------------發送---------------------------
BOOL?CICMP::SendICMPPack(sockaddr_in?*pAddr)
{
//填充ICMP數據各項
int??state;
char?*p_data;
m_pIcmp->type?=?ICMP_ECHO;
m_pIcmp->code?=?0;
m_pIcmp->ID?=?(USHORT)GetCurrentProcessId();
m_pIcmp->number?=?0;
m_pIcmp->time?=?GetTickCount();
m_pIcmp->cksum?=?0;
//填充數據
p_data?=?((char?*)m_pIcmp?+?sizeof(ICMP_HEAD));
memset((char?*)p_data‘0‘DEF_PACKET);
//檢查和
m_pIcmp->cksum?=?CheckSum((USHORT?*)m_pIcmp
DEF_PACKET+sizeof(ICMP_HEAD));
//發送數據
state?=?sendto(winsock(char?*)m_pIcmp
DEF_PACKET+sizeof(ICMP_HEAD)
NULL(struct?sockaddr?*)pAddrsizeof(sockaddr));
if(state?==?SOCKET_ERROR)?{
if(GetLastError()==WSAETIMEDOUT)
m_strInfo?=?“連接超時!(發送)“;
else
m_strInfo=“出現未知發送錯誤!“;
return?FALSE;
}
if(state? m_strInfo?=?“發送數據錯誤!“;
return?FALSE;
}
memcpy((void?*)&m_sockAddr(void?*)pAddr
sizeof(sockaddr_in));
return?TRUE;
}
//
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-06-01?18:19??第七章?網絡層協議和數據鏈路層\
?????目錄???????????0??2013-06-01?18:19??第七章?網絡層協議和數據鏈路層\源代碼\
?????目錄???????????0??2013-06-01?18:19??第七章?網絡層協議和數據鏈路層\源代碼\Debug\
?????文件???????18047??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\ICMP.obj
?????文件??????114755??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.exe
?????文件??????244564??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.ilk
?????文件???????14741??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.obj
?????文件?????5630352??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.pch
?????文件??????304128??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.pdb
?????文件????????2888??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTrace.res
?????文件???????39180??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\RouteTraceDlg.obj
?????文件??????110801??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\StdAfx.obj
?????文件??????214016??2008-07-27?19:24??第七章?網絡層協議和數據鏈路層\源代碼\Debug\vc60.idb
?????文件??????372736??2008-05-07?15:12??第七章?網絡層協議和數據鏈路層\源代碼\Debug\vc60.pdb
?????文件????????4969??2002-05-09?14:25??第七章?網絡層協議和數據鏈路層\源代碼\ICMP.cpp
?????文件????????1837??2002-05-08?16:32??第七章?網絡層協議和數據鏈路層\源代碼\ICMP.h
?????目錄???????????0??2013-06-01?18:19??第七章?網絡層協議和數據鏈路層\源代碼\RES\
?????文件?????????963??2002-05-04?13:02??第七章?網絡層協議和數據鏈路層\源代碼\RESOURCE.H
?????文件????????1078??2002-05-04?11:34??第七章?網絡層協議和數據鏈路層\源代碼\RES\RouteTrace.ico
?????文件?????????402??2002-05-04?11:34??第七章?網絡層協議和數據鏈路層\源代碼\RES\RouteTrace.rc2
?????文件????????1392??2002-05-13?18:07??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.clw
?????文件????????2119??2002-05-04?11:37??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.cpp
?????文件????????4387??2002-05-08?16:47??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.dsp
?????文件?????????543??2002-05-04?11:34??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.dsw
?????文件????????1251??2002-05-04?11:34??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.h
?????文件???????74752??2008-07-27?19:25??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.ncb
?????文件???????48640??2008-07-27?19:25??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.opt
?????文件?????????254??2008-07-27?19:24??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.plg
?????文件????????6015??2002-05-13?08:38??第七章?網絡層協議和數據鏈路層\源代碼\RouteTrace.rc
?????文件????????6564??2002-05-13?08:43??第七章?網絡層協議和數據鏈路層\源代碼\RouteTraceDlg.cpp
?????文件????????1424??2002-05-08?17:10??第七章?網絡層協議和數據鏈路層\源代碼\RouteTraceDlg.h
............此處省略2個文件信息
評論
共有 條評論