资源简介
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个文件信息
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 九齐单片机源码
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 多级菜单框架
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
评论
共有 条评论