资源简介
网络应用课程设计的发现网络中的活动主机C++版 其中有运行文件+源码+实验报告+答辩PPT

代码片段和文件信息
#pragma pack(4)
//#include “stdafx.h“
#pragma comment (lib“Ws2_32.lib“)
#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include
#include
#include
#include
typedef struct iphdr
{
unsigned int headlen:4;
unsigned int version:4;
unsigned char tos;
unsigned short totallen;
unsigned short id;
unsigned short falg;
unsigned char ttl;
unsigned char prot;
unsigned short checksum;
unsigned int sourceIP;
unsigned int destIP;
}IpHeader;
typedef struct icmphdr
{
BYTE type;
BYTE code;
USHORT checksum;
USHORT id;
USHORT seg;
}IcmpHeader;
#define ICMP_RCHO 8
#define ICMP_RCHO_REPLY 0
#define ICMP_MIN 8
#define STATUS_FAILED 0xFFFF
#define DEF_PACKET_SIZE 32
#define MAX_PACKET 1024
#define MAX_PING_PACKET_SIZE (MAX_PACKET+sizeof(IpHeader))
void fill_icmp_data(char *int);
USHORT checksum(USHORT *int);
void decode_resp(char *intstruct sockaddr_in *);
DWORD WINAPI FindIP(LPVOID pIPAddrTemp);
WSADATA wsaData;
SOCKET sockRaw;
struct sockaddr_in destfromend;
int fromlen =sizeof(from);
char *recvbuf=new char[MAX_PING_PACKET_SIZE];
unsigned int addr=0;
long ThreadNumCounter=0ThreadNumLimit=20;
long *aa=&ThreadNumCounter;
void main(int argcchar *argv[])
{
/*if(argc!=3)
{
cout<<“输入格式错误: start_ip end_ip“< return;
}*/
if(WSAStartup(MAKEWORD(21)&wsaData)!=0)
{
cout<<“WASStartup failed“< ExitProcess(STATUS_FAILED);
}
sockRaw=WSASocket(AF_INETSOCK_RAWIPPROTO_ICMPNULL0WSA_FLAG_OVERLAPPED);
if(sockRaw==INVALID_SOCKET)
{
cout<<“WASSocketet() falied“< ExitProcess(STATUS_FAILED);
}
int timeout=1000;
int bread=setsockopt(sockRawSOL_SOCKETSO_RCVTIMEO(char *)&timeoutsizeof(timeout));
if(bread==SOCKET_ERROR)
{
cout<<“FAILED TO SEY RECV TIMEOUT“< ExitProcess(STATUS_FAILED);
}
timeout=1000;
bread=setsockopt(sockRawSOL_SOCKETSO_SNDTIMEO(char *)&timeoutsizeof(timeout));
if(bread==SOCKET_ERROR)
{
cout<<“FAILED TO SEY RECV TIMEOUT“< ExitProcess(STATUS_FAILED);
}
memset(&dest0sizeof(dest));
unsigned long startIPendIP;
dest.sin_family=AF_INET;
dest.sin_addr.s_addr=inet_addr(argv[1]);
startIP=inet_addr(argv[1]);
end.sin_family=AF_INET;
end.sin_addr.s_addr=inet_addr(argv[2]);
endIP=inet_addr(argv[2]);
HANDLE hThread;
while(htonl(startIP)<=htonl(endIP))
{
if(ThreadNumCounter>ThreadNumLimit)
{
Sleep(5000);
continue;
}
DWORD ThreadID;
sockaddr_in *pIPAddrTemp=new (sockaddr_in);
if(!pIPAddrTemp)
{
cout<<“memory alloc failed“< return ;
}
*pIPAddrTemp=dest;
clock_t start;
start=clock();
hThread=CreateThread(NULLNULLFindIP(LPVOID)pIPAddrTempNULL&ThreadID);
long i=60000000L;
while(i--);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 208947 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\sendhost.exe
文件 246132 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\sendhost.ilk
文件 21427 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\sendhost.obj
文件 2011816 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\sendhost.pch
文件 418816 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\sendhost.pdb
文件 99328 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\vc60.idb
文件 69632 2012-05-31 10:19 发现网络中的活动主机\sendhost\Debug\vc60.pdb
文件 5826 2012-05-31 10:20 发现网络中的活动主机\sendhost\sendhost.cpp
文件 4308 2012-05-31 10:20 发现网络中的活动主机\sendhost\sendhost.dsp
文件 524 2012-05-31 10:19 发现网络中的活动主机\sendhost\sendhost.dsw
文件 33792 2012-05-31 10:20 发现网络中的活动主机\sendhost\sendhost.ncb
文件 48640 2012-05-31 10:20 发现网络中的活动主机\sendhost\sendhost.opt
文件 898 2012-05-31 10:19 发现网络中的活动主机\sendhost\sendhost.plg
文件 8957 2012-05-31 10:30 发现网络中的活动主机\wangluo.png
文件 181248 2012-05-31 10:16 发现网络中的活动主机\实验.ppt
文件 144506 2012-05-31 13:45 发现网络中的活动主机\实验报告.doc
目录 0 2012-05-31 13:47 发现网络中的活动主机\sendhost\Debug
目录 0 2012-05-31 13:47 发现网络中的活动主机\sendhost
目录 0 2012-05-31 13:47 发现网络中的活动主机\VC6.0运行出来的文件
目录 0 2012-05-31 13:48 发现网络中的活动主机
----------- --------- ---------- ----- ----
3504797 20
- 上一篇:C语言实战-学生成绩管理系统
- 下一篇:计算N阶乘n>20)用链表形式
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- 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
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论