栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 文件处理的简单应用(模拟从各种客户端访问一个网站)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 文件处理的简单应用(模拟从各种客户端访问一个网站)

目录

 

题目要求:

代码实现:

源.cpp:

Client.h:

Client.cpp: 


题目要求:

模拟从各种客户端访问一个网站

1)随机生成ip地址

2)记录不同ip地址的数量

ip地址分类方式:

      Class A: 0.0.0.0 – 127.255.255.255       Class B: 128.0.0.0 – 191.255.255.255       Class C: 192.0.0.0 – 223.255.255.255       Class D: 224.0.0.0 – 239.255.255.255       Class E: 240.0.0.0 – 247.255.255.255

代码实现:

源.cpp:
#include
#include
#include
#include
#include
#include"Client.h"
using namespace std;
int cnt[5];
void getData(fstream &x)//随机生成一组数据
{
	int a, b, c, d, f, g, h, i, j;
	a = rand() % 256;
	b = rand() % 256;
	c = rand() % 256;
	d = rand() % 256;
	f = rand() % 12 + 1;
	g = rand() % 30 + 1;
	h = rand() % 24;
	i = rand() % 60;
	j = rand() % 60;
	Client clientData(a, b, c, d, 2022, f, g, h, i, j);
	x.write(reinterpret_cast(&clientData), sizeof(Client));
	clientData.printAddress();
	cout << " ";
	clientData.printDate();
	cout << " ";
	clientData.printTime();
	cout << endl;
}
int main()
{
	fstream outData("data.dat", ios::out | ios::binary);//创建一个fstream对象,打开一个文件以二进制输出
	if (!outData)
	{
		cerr << "File could not be oppened" << endl;
		exit(EXIT_FAILURE);
	}
	srand(0);
	for (int i = 0; i < 100; i++)
	{
		getData(outData);
	}
	outData.close();//在不使用文件时立刻关闭文件
	ifstream inData("data.dat", ios::in | ios::binary);
	Client clientData;
	if (!inData)
	{
		cerr << "File could not be oppened" << endl;
		exit(EXIT_FAILURE);
	}
	inData.read(reinterpret_cast(&clientData), sizeof(Client));//以二进制形式读取文件
	while (inData && !inData.eof())//用ios函数判断是否达到文件末尾
	{
		if (clientData.fAddress() >= 0 && clientData.fAddress() < 128) cnt[0]++;
		else if (clientData.fAddress() >= 128 && clientData.fAddress() < 192) cnt[1]++;
		else if (clientData.fAddress() >= 192 && clientData.fAddress() < 224) cnt[2]++;
		else if (clientData.fAddress() >= 224 && clientData.fAddress() < 247) cnt[3]++;
		else if (clientData.fAddress() >= 247 && clientData.fAddress() < 256) cnt[4]++;
		inData.read(reinterpret_cast(&clientData), sizeof(Client));//以二进制形式读取文件
	}
	inData.close();
	cout << "nNumber of class A addresses: " << cnt[0] << endl
		<< "Number of class B addresses: " << cnt[1] << endl
		<< "Number of class C addresses: " << cnt[2] << endl
		<< "Number of class D addresses: " << cnt[3] << endl
		<< "Number of class E addresses: " << cnt[4] << endl;
	system("pause");
	return 0;
}

ps :时间戳我随便设定的,可以自己改改 

Client.h:
#pragma once
class Client
{
public:
	Client(int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0, int = 0);
	void setAddress(int, int, int, int);
	void setyear(int);
	void setmonth(int);
	void setday(int);
	void sethour(int);
	void setminute(int);
	void setsecond(int);
	void printAddress();
	void printDate();
	void printTime();
	int fAddress();
private:
	int address[4];
	int year, month, day, hour, minute, second;
};

Client.cpp: 
#include "Client.h"
#include
#include
using namespace std;
Client::Client(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j)
{
	setAddress(a, b, c, d);
	setyear(e);
	setmonth(f);
	setday(g);
	sethour(h);
	setminute(i);
	setsecond(j);
}
void Client::setAddress(int a, int b, int c, int d)
{
	address[0] = a;
	address[1] = b;
	address[2] = c;
	address[3] = d;
}
void Client::setyear(int x)
{
	year = x;
}
void Client::setmonth(int x)
{
	month = x;
}
void Client::setday(int x)
{
	day = x;
}
void Client::sethour(int x)
{
	hour = x;
}
void Client::setminute(int x)
{
	minute = x;
}
void Client::setsecond(int x)
{
	second = x;
}
void Client::printAddress()
{
	cout << address[0] << "." << address[1] << "." << address[2] << "." << address[3];
}
void Client::printDate()
{
	cout << year << "-" << setw(2) << setfill('0') << month << "-" << setw(2) << setfill('0') << day;//如果个位小于十需要补零
}
void Client::printTime()
{
	cout << setw(2) << setfill('0') < 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号