资源简介
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个文件信息
相关资源
- 动画编程 人体骨骼运动Forward Kinemat
- C++ Primer第四版中文高清非扫描版
- 谭浩强c++第二章例题
- c++FTP上传程序源代码
- KNN分类算法C++实现十次十倍交叉验证
- 图书管理系统C++数据结构
- 用C++编写的翻牌类游戏
- C++中国象棋人机对弈的实现
- accelerate c++ 英文版
- visual c++程序设计与应用教程课后操作
- 基于MFC的UDP通信实现
- opengl VisualC++
- 计算器 C++源码实现+-*\\()
- C++课程设计计算器
- 毕业设计-C++俄罗斯方块
- Opengl VC++演示六轴机械手
- c与c++嵌入式系统编程.pdf
- 基于网格的坡度滤波C++程序
- MiniSQL 用C++实现100166
- 南京理工大学c++课程设计6.2日期格式
- C++ 防火墙代码
- C++ Socket网络聊天
- vc++6.0 MFC 写的贪吃蛇工程源码
- C++Primer中文版(第4版)
- 用C++实现远程控制
- 遗传算法解决背包问题(C++版本)
- C++编程100例
- bmp24位彩色图像转8位灰度图像纯C++
- MFC平台下的电子词典
- c++宿舍管理系统源码+论文
评论
共有 条评论