计算机网络课程设计改进

又到了期末考试周,最近一直忙着准备期末考试,博客好久没更新。

针对上次的计算机网络课程设计的聊天机器人,老师让我另实现一个功能———将聊天记录按时间顺序以文本文件保存下来,并且一天的聊天记录只能在一个文件下,重新运行不破坏之前的聊天记录。

关于时间的操作在#include<time.h>头文件里。

time_t timer = time(NULL);
char time1[100];
char a[10] = ".txt";
strcpy(time1, ctime(&timer));

这样time1[100]里保存的就是时间信息。首先我们要在一开始就是先以上代码,这样就可以创建以日期为名的文件。

这以有另一个问题,fopen("abc.txt","a+"),可以打开一个名为abc的文本文件

我们还可以定义一个数组,char   ch[10]="abc.txt",然后fopen(ch,"a+"),也可以打开名为abc的文本文件。

但是我们在time1数组前面加一个",在后面加一个.txt",是不能直接用这个数组名打开文件的。首先文件名是不能含有\,/,:,*,?,",<,>,|的,而time1数组里面一开始保存的时间信息就是Mon Jun 19 22:25:11 2017这样的,因为含有:,所以这样的操作不行,所以我们提取前面的Mon Jun 19赋给另一个数组即可。这样就以这一天的时间命名了一个文本文件。

char txt[20];
for (int i = 0; i < 11; i++)
{
txt[i] = time1[i];
}
txt[11] = '.';
txt[12] = 't';
txt[13] = 'x';
txt[14] = 't';
txt[15] = '\0';
FILE * fp = fopen(txt, "a");

另一个问题就是字符数组的结尾必须是\0,以表示字符串的结束。

剩下的操作就很简单了,每次服务端发送信息之前读取时间,保存时间到文件,发送信息之后,保存发送信息到文件。接收信息的时候也进行这种操作。以下是完整代码。只是修改了服务端的代码,客户端的代码并没有修改,详见上一篇博文。

#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include <stdio.h>  
#include <Winsock2.h> 
#include<stdlib.h>
#include<time.h>
#pragma comment(lib, "WS2_32")
typedef struct node {
char data[100];
struct node *next;
}*LinkList;
node *createlink()
{
node *head = (node*)malloc(sizeof(node));
char t[100];
node *p;
node *q;
p  = head;
FILE * r = fopen("input.txt", "r");
if (r == NULL)
{
printf("打开文件失败!");
return NULL;
}


while (fscanf(r, "%s", &t) != EOF)
{
q = (node*)malloc(sizeof(node));
strcpy(q->data, t);
p->next = q;
p = q;
}
p->next = NULL;
return head;
}


int main()
{
node *head;
head = createlink();
head = head->next;
WORD w;
WSADATA wsdata;
int err;
w = MAKEWORD(1, 1);
err = WSAStartup(w, &wsdata);
if (err!=0)
{
return -1;
}
if (LOBYTE(wsdata.wVersion)!=1||HIBYTE(wsdata.wVersion)!=1)
{
WSACleanup();
return -1;
}
SOCKET socket1 = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN address;
address.sin_addr.S_un.S_addr = htons(INADDR_ANY);
address.sin_family = AF_INET;
address.sin_port = htons(1000);
bind(socket1, (SOCKADDR*)&address, sizeof(SOCKADDR));
listen(socket1, 10);
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
time_t timer = time(NULL);
char time1[100];
char a[10] = ".txt";
strcpy(time1, ctime(&timer));
char txt[20];
for (int i = 0; i < 11; i++)
{
txt[i] = time1[i];
}
txt[11] = '.';
txt[12] = 't';
txt[13] = 'x';
txt[14] = 't';
txt[15] = '\0';
FILE * fp = fopen(txt, "a");
while (true)
{
SOCKET sockConn = accept(socket1, (sockaddr*)&addrClient, &len);
char sendBuf[100]="欢迎来到聊天机器人\n";
send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);


char recvBuf[100];
recv(sockConn, recvBuf, 100, 0);
printf("%s", recvBuf);
while (true)
{
char recvBuf[100];
char sin[10] = "结束对话";
if (strcmp(recvBuf,sin)==0)
{
return 0;
}
recv(sockConn, recvBuf, 100, 0);




time_t timer = time(NULL);
char time[100];
strcpy(time, ctime(&timer));
fprintf(fp, "%s", time);


char b[12] = "客户端问:";
fprintf(fp, "%s", b);
fprintf(fp, "%s\n", recvBuf);



printf("客户端说: %s\n",recvBuf);






node *aa = head;
char talk[100];
printf("你想说什么:");
while (strcmp(recvBuf, head->data)!=0&&head->next)
{
head=head->next;
}
if (!(head->next))
{
if (strcmp(recvBuf, sin) != 0)
{
char a[100] = "我不能理解";
send(sockConn, a, strlen(a) + 1, 0);
fprintf(fp, "%s", time);
char bb[12] = "服务端说:";
fprintf(fp, "%s", bb);
fprintf(fp, "%s\n", a);
}
}
else {
strcpy(talk, head->next->data);
send(sockConn, talk, strlen(talk) + 1, 0);
fprintf(fp, "%s", time);
char bb[12] = "服务端说:";
fprintf(fp, "%s", bb);
fprintf(fp, "%s\n", talk);
}
head = aa;
printf("\n");

}
closesocket(sockConn);
fclose(fp);
}
    return 0;
}

运行


然后工程文件下面就生成了Thu Jun 22文本文件,里面保存了聊天信息,因为我们是以追加的方式填充信息的,所以再次运行,上次的聊天记录并没有被破坏。






目 录 摘 要 1 关键词: 计算机网络;网络规划;网络设计 ;校园网 1 一. 前言 2 二. 学校描述 3 三. 需求分析 4 3.1 带宽 4 3.2 子网与VLAN规划 4 3.3 实现的信息服务 4 3.4 应用程序 5 3.5 存储系统分析 5 3.6 系统及数据安全分析 5 3.7 QoS 5 3.8 网间隔离 6 四. 拓扑图及方案整体描述 7 4.1 主干网传输方案设计 7 4.2 Internet接入方案 7 4.3 远程访问支持 8 4.4 子网划分 9 4.5 网间隔离方案设计 12 4.6存储方案 13 4.7 设备选型 13 4.8 软件 14 4.9 信息服务方案 14 4.10 综合布线方案 15 4.10.1 结构化布线设计 15 4.10.2 综合布线系统 16 4.10.3设计目标 17 4.10.4工作区设计 18 4.10.6主干线区设计 19 4.10.7子配线间设计 20 4.10.8主配线间设计 21 五. 网络管理 22 5.1网络管理 22 5.2远程监控 22 5.2.1 制作客户端安装盘 22 5.2.2 配置客户机 23 5.2.3远程控制 23 5.3网络安全 24 六. 系统主要设备报价 26 七. 网络测试及协议数据包分析 27 参考资料 31 致谢 32 摘 要 当今的世界正从工业化社会向信息化社会转变。一方面,社会经济已由基于资源的经济逐渐转向基于知识的经济,人们对信息的需求越来越迫切,信息在经济的发展中起着越来越重要的作用,信息的交流成为发展经济最重要的因素。另一方面,随着计算机、网络和多媒体等信息技术的飞速发展,信息的传递越来越快捷,信息的处理能力越来越强,信息的表现形式也越来越丰富,对社会经济和人们的生活产生了深刻的影响。网上教育以受众广、投入低、不受师资的校舍等条件限制、容易开展高水平教育、教学质量相对容易保证等特点而受到教育界的广泛重视,目前国内一些重事业高校的网站已经开展这方面的应用。但现在中小学的校园网正在建设阶段。中小学建设校园计算机网络的根本动机,就是提高学校的管理效益和教学质量。而并非只有大量的资金投入,建设具有规模的计算机网络,才能开展学校的教育手段。架设满足学校应用需求的小的局域网络、教学网络同样也能发挥大的教育效益。 网络是信息时代的产物,互联网本身以及各种基于互联网的应用都成了学校教学的内容,这就需要一个平台支持实施这种教学活动.校园网就是利用学校原有的内部局域网, ,通过架设WEB服务器、FTP服务器、论坛、在线流媒体等,从而组建起一个校园网络,促进学校教育的发展. 关键词: 计算机网络;网络规划;网络设计 ;校园网 一. 前言 在二十一世纪的现代信息社会中,对于网络办公和学习是越来越受到重视很运用,几乎在全球的绝大多数学校都组建了网络环境。在通信设备不断普及的今天,原始的教学方式已经不能完全满足我们学习和生活的需求。为了提高教育和学习的质量,所有师生对网络办公和学习的需求是迫在眉睫,所有人都希望在校园里的都能上网络。正所谓大有大的难处,校园网一般具有较大的规模,它不是网络设备的简单组合,而是一种整体的校园系统。校园网必须满足校园扩展需要,确保高吞吐量、安全性。在很多时候,由于校园网络的种种问题的产生,以及学校对网络的需求随着学校的扩招却迅速增大。因此迫切需要在保障学生的学习和生活不受到影响的前提下,通过引进先进的组网模式,改造或者重新规划建设校园网络,以满足学校对网络的需求,保障学校的正常运转,同时实现教育信息化的目标。要求全新设计的校园网络能够最大限度的保护现有网络投资,以最低的造价实现信息化校园网络的标准,以满足日益增长的校园建设需求;建成后的网络应易于应用、管理和维护;施工过程中不能影响学校的正常运转,所提供的方案最好具有推广的价值,或者能够有效的降低网络接入与运行费用,保障大多数学生、教职员工都能够有条件接入、使用网络,提高学习与工作效率,实现教育的信息化。鉴于现在大多数校园都已经普及了有线网络,为了保障投资和提高网络的利用率以及最大限度的保障网络的健壮性,我在下面的方案中主要是以校园网组网为主。为所有师生提供最好的网络接入方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值