文档库 最新最全的文档下载
当前位置:文档库 › SMTP邮件服务器实验报告及源代码

SMTP邮件服务器实验报告及源代码

SMTP邮件服务器实验报告及源代码
SMTP邮件服务器实验报告及源代码

SMTP邮件服务器实验

1.实验内容和实验环境描述

实验任务:使用Socket API编写一个SMTP邮件服务器程序

实验内容:1)作为SMTP服务器,接收邮件客户端程序的TCP连接请求,接收SMTP命令和邮件数据,将邮件保存在文件中;

2)作为SMTP客户端,建立到实际邮件服务器的TCP连接,发送SMTP命令,将保存的邮件发送给实际邮件服务器;

3)提供邮件差错报告:将实际邮件服务器的差错报告转发给邮件客户端软件;

4)支持一封邮件多个接收者,要求接收者属于不同的域(如https://www.wendangku.net/doc/8d11221697.html,、https://www.wendangku.net/doc/8d11221697.html,、https://www.wendangku.net/doc/8d11221697.html,,…);

5)提供发件人和收件人Email地址格式检查功能,例如下列邮件地址是错误的:chengli,chengli@,https://www.wendangku.net/doc/8d11221697.html,,…. 。

实验环境:Microsoft Visual Studio 2010

2. 软件设计

(1) 数据结构:

char mail_from[4096]; //存发件地址

char rcpt_to[5][4096]; //存收件地址

char data[4096]; //存Data

char imf[4096]; //存邮件标准格式

WORD A; //加载套接字库

WSADATA B; //储存调用WSAStartup函数返回的Windows Sockets初始化信息

int err; //报错标志

SOCKET sockSrv; //创建用于监听客户端的套接字

SOCKADDR_IN addrSrv; //作为服务器端的socket地址

char recvBuf[4096]=""; //接收客户端SMTP指令

(2) 模块结构:

[1]main(); //服务器端,用于从客户端接收储存邮件

[2]main_clicenet(SOCKET s); //客户端,用于将收到的邮件转发到邮件服务器,同时将邮件服务器的错误报告通过SOCKET s转发给客户端

[3]ValidEmail(char *addr); //收发件地址(addr)合法性监测

(4) 主要功能模块的实现要点

[1]main(); //服务器端,用于从客户端接收储存邮件

实现要点:与客户端建立连接,根据SMTP协议标准进行通信。

[2]main_clicenet(SOCKET s); //客户端,用于将收到的邮件转发到邮件服务器,同时将邮件服务器的错误报告通过SOCKET s转发给客户端

实现要点:与服务器端建立连接,根据SMTP协议标准进行通信。

[3]ValidEmail(char *addr); //收发件地址(addr)合法性监测

实现要点:根据标准email地址格式进行合法性监测

3 实验结果演示及分析

(1) 对于你所实现的功能,逐个进行测试,并将输出截图。

普通邮件群发:

1>

2>

3>

错误报告:

1>

2>

(2) 你的程序是否提供了差错处理功能?可以对哪些差错进行处理?

[1]将实际邮件服务器的差错报告转发给邮件客户端软件;

[2]监测收发件邮箱地址格式是否正确

(3) 和课堂上学习的SMTP协议相比,你的程序是否完全按照协议来实现,是否有不同之处?和实际的SMTP 服务器相比,你的程序有哪些优点和不足?

不是。因为main函数无法从客户端收取用户名和密码,故跳过AUTH LOGIN部分,直接开始MAILFROM:<……>。

优点:代码功能较为简洁易懂。

不足:未实现用户合法性监测。以及收发件邮箱地址是否实际存在。

4 实验总结和心得体会

描述你在调试过程中都遇到了哪些问题和解决的过程。

(1) 完成本次实验的实际上机调试时间是多少?

14hours。

(2) 编程工具方面遇到了哪些问题?包括Windows环境和VC软件的安装问题。

没。

(3) 编程语言方面遇到了哪些问题?包括C语言使用和对C语言操控能力上的问题。

涉及到Socket方面的函数由于初次接触使用尚不熟练。

(4) 协议方面遇到了哪些问题?包括协议机制的设计错误,发现协议死锁,或者不能正确工作,协议参数的调整等问题。

协议中提供的邮件域名解析指令被大部分邮件服务器屏蔽,只能通过其他函数编码实现相应功能。

(5) 通过本次试验,你认为SMTP协议有哪些不足?有何改进思路?

功能较为基础,但扩展改进等已有SSL,X2.5等增强版本存在。

(6) 总结本次实验,你在C 语言方面,协议软件方面,理论学习方面,软件工程方面等哪些方面上有所提高?

熟悉了C语言的编码规范,通信协议的工作机制。

5 源程序清单

#pragma comment(lib,"wsock32.lib")

#include

#include

#include

#include

charmail_from[4096];

charrcpt_to[5][4096];

char data[4096];

charimf[4096];

voidmain_Client(SOCKET);

intValidEmail(char*);

void main()

{

WORD A = MAKEWORD(1,1); //加载套接字库

WSADATA B; //储存调用WSAStartup函数返回的Windows Sockets初始化信息int err;

err=WSAStartup(A,&B); //根据A要求的版本初始化Winsock服务

if(err!=0) // Tell the user that we couldn't find a useable

{ // winsock.dll.

return;

}

if (LOBYTE(B.wVersion)!=1||HIBYTE(B.wVersion)!=1)

{

WSACleanup( ); //检查socket版本,不符合则释放分配资源return;

}

SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //创建用于监听客户端的套接字SOCKADDR_IN addrSrv; //作为服务器端的socket地址

addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); // Internet address

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(25); //服务器端端口号

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //绑定套接字

listen(sockSrv,5); //将套接字设为监听模式,准备接受客户请求

SOCKADDR_IN addrClient; //客户端地址

intlen=sizeof(SOCKADDR);

char *sendBuf[]={

"220 LX's SMTP Ready\r\n",

"250 LX's server|250 mail|250 PIPELINING\r\n",

"250 OK\r\n",

"250 OK\r\n",

"354 Start mail input;end with .\r\n",

"250 OK\r\n",

"250 OK\r\n",

"QUIT\r\n",

"550 Invalid User\r\n"}; //发送标示符

char tempbuf1[4096]="";

while(1) //等待客户请求

{

SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //队列非空则sockSrv抽取第一个链接,否则阻塞调用进程

FILE *fp;

fp=fopen("d:\\University\\mail.txt","w+");

char recvBuf[4096]=""; //接收客户端SMTP指令

memset(rcpt_to,0,sizeof(rcpt_to));

send(sockConn,sendBuf[0],strlen(sendBuf[0]),0); //向已经连接的套接字sockConn发送连接建立信息:220

recv(sockConn,recvBuf,sizeof(recvBuf),0); //接收数据EHLO acer-PC

fprintf(fp,"%s\n",recvBuf); //将数据写入文件

memset(recvBuf,0,sizeof(recvBuf)); //将recvBuf前4096个字节用字符'0'替换

send(sockConn,sendBuf[1],strlen(sendBuf[1]),0); // send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv:MAIL FROM:<...>

if(ValidEmail(recvBuf)){send(sockConn,sendBuf[8],strlen(sendBuf[8]),0); closesocket(sockConn); fclose(fp); continue; }//send:550

memcpy(mail_from,recvBuf,sizeof(recvBuf));

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[2],strlen(sendBuf[2]),0); //send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv: RCPT TO:<....>

if(ValidEmail(recvBuf)){send(sockConn,sendBuf[8],strlen(sendBuf[8]),0); closesocket(sockConn); fclose(fp); continue; }//send:550

memcpy(rcpt_to[0],recvBuf,sizeof(recvBuf));

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[2],strlen(sendBuf[2]),0); //send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0);//recv:??

int i=1;

strncpy(tempbuf1,recvBuf,4);

while((strcmp(tempbuf1,"RCPT")==0)&&(i<5))

{

if(ValidEmail(recvBuf)){send(sockConn,sendBuf[8],strlen(sendBuf[8]),0);

closesocket(sockConn); fclose(fp); continue;}//send:550

memcpy(rcpt_to[i],recvBuf,sizeof(recvBuf));

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[2],strlen(sendBuf[2]),0); //send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv: RCPT TO:<....>

strncpy(tempbuf1,recvBuf,4);

++i;

}

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[4],strlen(sendBuf[4]),0);//send:354 Start mail input;end with .\r\n

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv:DATA fragment, ...bytes

memcpy(data,recvBuf,sizeof(recvBuf));

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[5],strlen(sendBuf[5]),0); //send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv:IMF

memcpy(imf,recvBuf,sizeof(recvBuf));

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[6],strlen(sendBuf[6]),0); //send:250 OK

recv(sockConn,recvBuf,sizeof(recvBuf),0); //recv: .

fprintf(fp,"%s\n",recvBuf);

memset(recvBuf,0,sizeof(recvBuf));

send(sockConn,sendBuf[7],strlen(sendBuf[7]),0); //send:QUIT

fprintf(fp,"%s\n",recvBuf);

main_Client(sockConn); //调用客户端函数

closesocket(sockConn); //关闭套接字

fclose(fp); //关闭文件指针

}

WSACleanup(); //释放分配资源

}

voidmain_Client(SOCKET sockCo)

{

WORD A=MAKEWORD(1,1);

WSADATA B;

int err;

err=WSAStartup(A,&B);

if(err!=0){return;}

if(LOBYTE(B.wVersion)!=1||HIBYTE(B.wVersion)!=1)

{WSACleanup();return;}

SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrClient;

addrClient.sin_family = AF_INET;

addrClient.sin_port = htons(25);

structhostent *host; //主机信息

host = gethostbyname("https://www.wendangku.net/doc/8d11221697.html,");

memcpy(&addrClient.sin_addr.S_un.S_addr,host->h_addr_list[0],host->h_length); //将获取的主机IP地址复制到客户端网络地址.32位无符号IPV4地址

connect(sockClient,(SOCKADDR*)&addrClient,sizeof(SOCKADDR)); //连接套接字

char *SendBuf[] = {

"EHLO https://www.wendangku.net/doc/8d11221697.html,\r\n",

"AUTH LOGIN\r\n",

"Z3VhaWRhbzIy\r\n",//邮箱名的Base64编码

"THVuYVhUSjkyMTAxNA==\r\n",//密码的Base64编码

"DATA\r\n",

"\r\n.\r\n",

"QUIT"

};

chararecvBuf[4096] = "";

chartempbuf[3]="";

memset(tempbuf,0,sizeof(tempbuf));

memset(arecvBuf, 0, sizeof(arecvBuf)); //初始化arecvBuf

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:220 OK

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[0], strlen(SendBuf[0]), 0); //send:EHLOacer_PC

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:250 OK

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"250")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[1], strlen(SendBuf[1]), 0); //send:AUTH LOGIN

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:334

if(strcmp(tempbuf,"334")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[2], strlen(SendBuf[2]), 0); //send:Z3VhaWRhbzIy

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:334

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"334")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[3], strlen(SendBuf[3]), 0); //send:THVuYVhUSjkyMTAxNA== recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //rec:235

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"235")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, mail_from, strlen(mail_from), 0); //send:MAIL FROM:<...>

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:250 OK

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"250")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

int i=0;

while((rcpt_to[i][0]!=0)&&(i<5))

{

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, rcpt_to[i], strlen(rcpt_to[i]), 0); //send:RCPT TO:<....>

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:250 OK

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"250")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

++i;

}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[4], strlen(SendBuf[4]), 0); //send: DATA

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:354

if(strcmp(tempbuf,"354")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, data, strlen(data), 0); //send:DATA fragment, ...bytes

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, imf, strlen(imf), 0); //send:imf fragment

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[5], strlen(SendBuf[5]), 0); //send: .

recv(sockClient, arecvBuf, sizeof(arecvBuf), 0); //recv:250 OK

strncpy(tempbuf,arecvBuf,3);

if(strcmp(tempbuf,"250")!=0){send(sockCo,arecvBuf,strlen(arecvBuf),0);}

memset(arecvBuf, 0, sizeof(arecvBuf));

send(sockClient, SendBuf[6], strlen(SendBuf[6]), 0); //send: QUIT

closesocket(sockClient);

WSACleanup();

}

intValidEmail(char *addr)

{

intflag_d=0,flag_at=0,flag_n=0;

intat_addr=0,point_addr=0,maohao_at=0;

int error=0;

int i=0,j=0;

for(j;j

{

if((maohao_at==0)&&(addr[j]!=':')){continue;}

else{maohao_at=i;break;}

}

i=j+3;

for(;i<(strlen(addr)-1);i++) //d@nprintf("error=%d\n",error);

{

if((i-j)==3) //监测第一个字符的合法性

{if(((addr[i]<58)&&(addr[i]>47))||((addr[i]<91)&&(addr[i]>64))||((addr[i]<123)&&(addr[i]>96)))conti nue;

else {error=1;break;}

}

if(flag_at==0) //监测d合法性

{

if(((addr[i]<58)&&(addr[i]>47))||((addr[i]<91)&&(addr[i]>64))||((addr[i]<123)&&(addr[i]>96))||(addr[ i]==46))

{

if(addr[i]==46){

if(i==(point_addr+1)){error=1;break;}

else {point_addr=i;continue;}

}

else {continue;}

}

else if(addr[i]==64){flag_at=1;;at_addr=i;continue;}

else{error=1;break;}

}

if(flag_at==1) //监测n合法性

{

if((i==at_addr+1)||(i==(strlen(addr)-1)))

{

if(((addr[i]<58)&&(addr[i]>47))||((addr[i]<91)&&(addr[i]>64))||((addr[i]<123)&&(addr[i]>96)))contin ue;

else{error=1;break;}

}

else

{

if(((addr[i]<58)&&(addr[i]>47))||((addr[i]<91)&&(addr[i]>64))||((addr[i]<123)&&(addr[i]>96))||(addr[ i]==46))

{

if(addr[i]==46){

if(i==(point_addr+1)){error=1;break;}

else {point_addr=i;continue;}

}

else continue;

}

}

}

}

if(error==1||flag_at==0) error=1;

return error;

}

WWW服务器配置实验报告

信息科学与技术学院实验报告 课程名称: 计算机网络应用技术教程实验项目: WWW服务器配置 实验地点:指导教师: 日期: 2013/10/29 实验类型:验证性实验(验证性实验综合性实验设计性实验)专业: 班级: 11级姓名: 学号: 一、实验目的及要求 1.实验目的: 1.正确理解WWW服务的运行机制,了解常用的wed服务器软件。 2.掌握IIS服务器的安装和管理,创建wed站点利用IIS在一台服务器上运行多个网站。 3.掌握虚拟机主机和虚拟目录的创建删除。 2.实验要求: 1.理解IIS服务的概念及其所具有的功能。 2.掌握IIS服务的安装方法。 3.掌握WWW服务的配置包括IP地址、端口号、默认文档、安全等设定,以及如何应用WWW服务的方法。 4.了解虚拟目录服务的作用。 二、实验仪器、设备或软件 1.实验仪器:电脑一台 三、实验内容及原理 1.实验内容: (1).学会安装IIS。 (2).掌握www服务器的配置和使用。 (3).创建虚拟目录。 2.实验原理: 万维网WWW(World Wide Web)服务,又称为Web服务,是目前TCP/IP互联网上最方便和最受欢迎的信息服务类型,是因特网上发展最快同时又使用最多的一项服务,目前已经进入广告、新闻、销售、电子商务与信息服务等诸多领域,它的出现是TCP/IP互联网发展中的一个里程碑。 WWW服务采用客户/服务器工作模式,客户机即浏览器(Browser),服务器即Web服务器,它以超文本标记语言(HTML)和超文本传输协议(HTTP)为基础,为用户提供界面一致的信息浏览系统。信息资源以页面(也称网页或Web页面)的形式存储在Web服务器上(通常称为Web站点),这些页面采用超文本方式对信息进行组织,页面之间通过超链接连接起来。这些通过超链接连接的页面信息既可以放

网络攻防实验报告

实验报告模板

【实验目的】(简要描述实验目的) 采用免杀、混淆等技术的恶意代码有可能突破安全软件的防护而运行在目标主机中。即使用户感受到系统出现异常,但是仅仅通过杀毒软件等也无法检测与根除恶意代码,此时需要用户凭借其它系统工具和对操作系统的了解对恶意代码手工查杀。本实验假设在已经确定木马进程的前提下,要求学生借助进程检测和注册表检测等系统工具,终止木马进程运行,消除木马程序造成的影响,从而实现手工查杀恶意代码的过程。 【实验结果及分析】(需要有结果截图) 一、恶意代码手工查杀实验 1、虚拟机快照 为防止虚拟机破坏后无法恢复,应先将干净的虚拟机进行快照设置。点击菜单“虚拟机”“快照”“拍摄快照”,创建一个干净的虚拟机快照。 2.创建被感染的系统环境 由于恶意代码采用了免杀技术,因此能够成功绕过防病毒等安全软件检测,等用户感到系统异常时,通常恶意代码已经在主机系统内加载运行。为了尽量模拟一个逼真的用户环境,我们在搭建好的虚拟机中运行木马宿主程序 “radar0.exe”。运行完后,可以看见,“radar0.exe”自动删除。

3.木马进程的定位 用户对系统的熟悉程度决定了发现系统异常继而查找恶意代码的早晚。在本例中,明显可以感受到系统运行速度变慢,打开任务管理器,可以观察到有一个“陌生”的进程(非系统进程或安装软件进程)“wdfmgr.exe”占用CPU比率很高。 为了确定该进程为木马进程,可以通过查找该进程的静态属性如创建时间、

开发公司、大小等,以及通过对该进程强制终止是否重启等现象综合判断。在本例中,“Wdfmgr.exe”为木马radar.exe运行后新派生的木马进程。 4.记录程序行为 打开工具“ProcMon.exe”,为其新增过滤规则“Process Name”“is”“wdfmgr.exe”,然后开始监控。点击“Add”将过滤规则加入,可以看到ProcMon开始监控“wdfmgr.exe”进程的行为。需要注意的是,有时为了保证观察到的行为完备性,会先启动ProcMon工具,然后再启动被监控进程。 为了分别观察该进程对文件系统和注册表的操作,点击菜单 “Tools”“File Summary”,观察对文件系统的修改。

FTP服务器配置实验报告

F T P服务器配置实验报告 Prepared on 22 November 2020

实验报告 课程:计算机网络实验 实验名称: FTP服务器配置与管理 系别 : 电子信息工程系 实验日期 : 专业班级 : 03通信师 组别 : 第10组 实验报告日期 : 姓名 : 学号 : (40) (41) 报告退发 : ( 订正、重做 ) 第1页共 12 页 FTP服务器配置与管理 一.题目: FTP服务器配置与管理 二.环境: Sever2000 三.试验目的 1.掌握FTP服务的基本概念与工作原理 2.懂得安装FTP服务器的过程 3.配置与管理FTP服务器 四.试验内容及步骤 1.的安装,具体步骤如下: (1)运行“控制面板”中的“添加或删除程序”,点击“添加/ 删除Windows组件”按钮。 第 2 页共 12页 (2)在出现组件安装向导中,选择“Internet信息服务 (IIS)”,单击“下一步”开始安装,单击“完成”结 束。 第 3 页共 12 页 系统自动安装组件,完成安装后,系统在“开始”/“程序”/“管理工具”程序组中会添加一项“Internet服务管理器”,此时服务器的WWW、FTP等服务会自动启动。 2.设置FTP站点 第 4 页共 12 页 (1)使用IIS默认站点

①将制作好的主页文件(html文件)复制到 \Inetpub\ftproot目录,该目录是安装程序为默认FTP站点 预设的发布目录。 ②将主页文件的名称改为。IIS默认要打开的主页文件是 或,而不是一般常用的。 完成这两个步骤后,打开本机或客户机浏览器,在地址栏 中输入FTP服务器的 IP地址()或主机的FQDN名字(前 提是DNS服务器中有该主机的记录),就会以匿名的方式 登录到FTP服务器,根据权限的设置就可以进行文件的上 传和下载了。 (2)添加新的FTP站点 ①打开“Internet信息服务窗口”,鼠标右键单击要创建 新站点的计算机,在弹出菜单中选择“新建”/“FTP站 点”,出现“FTP站点创建向导”,单击“下一步”继 续。 第 5 页共 12 页 ②输入FTP站点说明,单击下一步 第 6 页共 12 页 ③ 单击下一步 ④指定FTP输入主目录的路径(如选择新建文件夹),单击下一步 第 7 页共 12 页 ⑤设置访问权限为读取和写入,并单击下一步,完成FTP站点创建向导 第 8 页共 12 页 站点的管理 (1)本地管理 通过“开始”/“程序”/“管理工具”/“Internet服务管理 器”,打开如图9-1的“Internet信息服务”窗口,在要管 理的FTP站点上单击鼠标右键,选择“属性”命令,出现如下 图所示对话框。 第 9 页共 12 页 ①“FTP站点”属性页 IP地址:设置此站点的IP地址,即本服务器的IP地址。 如果服务器设置了两个以上的IP站点,可以任选一个。FTP 站点可以与Web站点共用IP地址以及DNS名称,但不能设置 使用相同的TCP端口。 TCP端口:FTP服务器默认使用TCP协议的21端口,(若端口号21以被配置,则需更改此端口,用户在连接到此站点时,

实验一基于TCP套接字的文件传输客户服务器程序设计实验报告

2011年秋季学期《计算机网络II》实验报告 考核科目:计算机网络II 学生所在院(系):计算机科学与技术学院 学生所在学科: 姓名: 学号: 实验时间:2011年11月29日

一、问题描述 1.实验名称: 基于TCP套接字的文件传输客户服务器程序设计 2.实验目的: 掌握基于TCP套接口的网络程序设计。 掌握大规模文件传输的基本方法。 3.实验要求: 服务器程序分别实现迭代服务器,并发服务器,使用单进程和select 的TCP服务器。 服务器在客户提出请求后向客户发送一个不小于1M大小的文件。 二、概要设计 1.客户程序概要设计。 创建TCP套接口; 指定服务器IP地址和端口; 建立与服务器的连接; 向服务器发送请求传送文件的请求“hello”; 接受服务传输过来的数据; 终止程序。 2.迭代服务器概要设计。 创建TCP套接口; 捆绑服务器众所周知端口到套接口; 把套接口变成监听套接口; 接受客户连接; 读取客户的请求,发送应答; 终止连接并等待下一个客户连接。 3.并发服务器概要设计。 创建TCP套接口; 捆绑服务器众所周知端口到套接口; 把套接口变成监听套接口; 接受客户连接; 调用fork()派生子进程处理连接,父进程等待新的连接请求并处理结 束的子进程; 子进程读取客户的请求,发送应答,数据传输结束后终止连接并退出。 4.使用单进程和select的TCP服务器概要设计。 创建TCP套接口; 捆绑服务器众所周知端口到套接口; 把套接口变成监听套接口; 调用select初始化数据结构; 阻塞于select;

若监听套接字变为可读,accept新的连接; 检查现有连接,若连接可读则读取客户请求,发送应答,数据传输结束 后关闭当前连接并更新数据结构。 三、详细设计 1.客户程序详细设计。 a)主要数据结构设计 ipv4套接字地址结构 struct in_addr{ in_addr_t s_addr; }; struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; }; 字符数组 char buf[MAXSIZE]; b)主要函数功能 socket(),connect(),writen(),readn(),close() int socket(int domain, int type, int protocol); 指定期望的通信协议类型。返回值:成功则为非负描述符,出错则为-1。 int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); tcp客户用connect函数来建立与tcp服务器的连接。 ssize_t readn(int fd,void *vptr,size_t n); 从一个描述字读n个字节到vptr所指的缓冲区。 ssize_t writen(int fd,const void*vptr,size_t n); 从vptr所指的缓冲区中写n个字节到一个描述字。 int close(int fd); 关闭描述字。 2.迭代服务器详细设计。 a)主要数据结构设计 ipv4套接字地址结构(略) 字符数组 char buf[MAXSIZE]; b)主要函数功能 socket(),bind(),listen(),accept(),writen(),readn(),close() int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen); bind函数把一个本地协议地址赋予一个套接字。对于网际网协议,协议地址 就是32位的ipv4地址或者128位的ipv6地址与16位的tcp或udp端口号的 组合。如果一个tcp客户或者服务器未曾调用bind捆绑一个端口,当调用

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

Apache服务器配置实验报告

在Linux下配置Apache服务器 一、实验目的 完成本次实训,将能够: ●配置基本的Apache服务器 ●配置个人用户Web站点。 ●配置虚拟目录别名功能。 ●配置主机访问控制。 ●配置用户身份验证功能.。 ●配置基于IP地址的虚拟主机. 二、实验环境 1、RedHat Linux4AS. 2、Apache 2.0 三、实验内容 1.配置基本的Apache服务器 2.配置个人用户Web站点。 3.配置虚拟目录别名功能。 4.配置主机访问控制。 5.配置用户身份验证功能.。 6.配置基于IP地址的虚拟主机。 四、实验要求 在Linux操作系统下配置Apache服务器。 五、注意事项 1.在修配置文件下注意区分大小写、空格。 2.在每次重新开机后都必须启动Apachec服务器。 3.在每次修改完主配置文件后保存起来,必须重启Apachec服务器,如果不重启会 导致配置无效,最终导致实验失败。 六、实验步骤 1、检测是否安装了Apache软件包: A、首先为服务器网卡添加一个固定的IP地址。 B、在Web浏览器的地址栏中输入本机的IP地址,若出现Test Page测试页面(该 网页文件的默认路径为var/www/html/index.html)如下图1所示就说明Apache 已安装并已启动。

另一种方法是使用如下命令查看系统是否已经安装了Apache软件包: [root@rhe14~]# rpm –aq | grep httpd Httpd-suexec-2.0.52-9.ent Httpd-manual-2.0.52-9.ent System-config-httpd-1.3.1-1 Httpd-devel-2.0.52-9.ent 出现以上内容表明了系统已安装Apache软件包。 2、安装Apache软件包 超级用户(root)在图形界面下选择“应用程序”|“系统设置”|“添加/删除应用程序”命令,选择“万维网服务器”软件包组,在单击“更新”按钮就可以安装与Apache相关的软件包。 3、Apache的基本配置 (1)打开终端输入[root@rhe14~]# /etc/rc.d/init.d/httpd start //启动Apache 或者 [root@rhe14~]# apachectl start //启动Apache [root@rhe14~]# apachectl stop //停止Apache服务 [root@rhe14~]# apachectl restart //重启Apache服务 [root@rhe14~]# apachectl configtest //测试Apache服务器配置语法(2)在httpd.conf将Apache的基本配置参数修改、将一些注释的语句取消注释,或将某些不需要的参数注释掉。 (3)将包括index.html在内的相关网页文件复制到指定的Web站点根目下(var/www/html/index.html) (4)重启httpd进程 (5) 在Web浏览器下输入配置的ip地址出现如下图2,那表明基本配置成功了:

软件工程 实验报告

v1.0 可编辑可修改 院系:计算机科学学院 专业:计算机科学与技术 年级: 2013级 课程名称:软件工程 组员:司少武(1135) 兰少雄(1136) 张宇(1133) 纳洪泽(1132) 指导教师:刘卫平 2015年 12月 26 日

聊天室 1 前言 即时消息系统的研究现状 即时消息系统[1](Instant Messenger,IM)是一种在后 PC 时代兴起的,以Internet 网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,能够跟踪网络用户在线状态的网络应用软件。即时消息系统产生有着深刻的社会原因:人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时消息软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周围的人保持距离,以致人们更愿意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地域的限制,达到人与人、人与信息之间的零距离交流。从这点上讲,即时消息系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间。 本工程的主要内容 随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,且具有脱离数据库技术方法,易于维护和更新的特点。 2 需求分析 本系统所要实现的主要功能是当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加

网络防御实验报告

网络防御实验报告 学院计算机学院 专业网络工程 班级1班 姓名刘小芳 学号41009040127 - 2013年12月30日

一.实验题目 网络防御实验 二.实验环境 PC 机一台; 操作系统:win7 物理地址:EO-E9-A5-81-A5-1D IP地址:192.168.1.102 三.实验目的 掌握有关网络防御的基本原理和方法; 四.常见网络防御方法 10.1物理层 10.2网络层 路由交换策略 VLAN划分 防火墙、隔离网闸 入侵检测 抗拒绝服务 传输加密 10.3系统层 漏洞扫描 系统安全加固 10.4应用层 防病毒 安全功能增强 10.5管理层 独立的管理队伍 统一的管理策略 五、实验方法概述 前面设计了网络攻击实验,现在在前面的基础上完成网络攻击的防御,主要模仿现在常用的网络防御手段,如防火墙等。 六.概述: 1.恶意代码及黑客攻击手段的三大特点: 传播速度惊人:“大型推土机”技术(Mass rooter),是新一代规模性恶意代码具备的显著功能。 这些恶意代码不仅能实现自我复制,还能自动攻击内外网上的其它主机,并以受害者为攻击源继续攻击其它网络和主机。 以这些代码设计的多线程和繁殖速度,一个新蠕虫在一夜之间就可以传播到互联网的各个角落。

2.受害面惊人:许多国家的能源、交通、金融、化工、军事、科技和政府部门等关键领域的信息化程度逐年提高,这些领域的用户单位的计算机网络,直接或间接地与Internet有所联系。 各种病毒、蠕虫等恶意代码,和各种黑客攻击,通过Internet为主线,对全球各行业的计算机网络用户都造成了严重的影响。 3穿透深度:蠕虫和黑客越来越不满足于攻击在线的网站,各种致力于突破各种边界防线的攻击方式层出不穷。 一个新的攻击手段,第一批受害对象是那些24小时在线的网站主机和各种网络的边界主机; 第二批受害对象是与Internet联网的,经常收发邮件的个人用户; 第三批受害对象是OA网或其它二线内网的工作站; 终极的受害对象可能会波及到生产网络和关键资产主机。 4.网络攻击的动机 偷取国家机密 商业竞争行为 内部员工对单位的不满 对企业核心机密的企望 网络接入帐号、信用卡号等金钱利益的诱惑 利用攻击网络站点而出名 对网络安全技术的挑战 对网络的好奇心 5.攻击的过程 预攻击攻击后攻击

浙江大学Linux程序设计实验报告

Linux程序设计实验报告1 ——操作系统基本命令使用 一、实验目的 1.通过对Emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Redhat Fedora Core6操作系统 四、实验步骤与操作指导 任务1.学习emacs的使用,要求能新建、编辑、保存一个文本文件 (1)启动emacs (2)输入以下C程序 (3)保存文件为kk.c (4)用emacs打开文件kk.c (5)修改程序 (6)另存为文件aa.txt并退出。 任务2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include int main( ) {

printf(“Hello world!\n”); return 0; } 此时可以用Backspace、→、←、↑、↓键编辑文本。 (3)保存文件为kk.c 按Esc键,进入最后行状态,在最后行状态输入:wq保存文件,退出vi。 (4)用vi打开文件kk.c,输入命令: [root@localhost root]#vi kk.c (5)修改程序为: #include int main( ) { printf(" Hello world!\n"); printf("*****************\n"); return 0; } (6)按Esc键,进入最后行状态,在最后行状态输入:wq aa.txt保存文件,如图1所示,另存为文件aa.txt并退出vi。。 图1 程序编辑环境 任务3.gedit的使用,要求能新建、编辑、保存一个文本文件 (1)启动gedit,点击”应用程序”→ “附件”→“文本编辑器”,打开文本编辑器,如图所示。

web服务器的配置实验报告doc

web服务器的配置实验报告 篇一:计算机网络实验报告——Web服务器的配置 实验2 web服务器配置 一、实验目的: 掌握如何使用windows XX server的IIS5.0配置出web 服务器 二、实验内容: 1、创建一个web站点,并且可以实现在别人的计算机上访问该站点 2、使用不同的ip建立多个站点 3、在一个站点下建立多个子站点(使用虚拟目录实现) 4、在同一个套接字(即ip地址+端口)上建立多个站点(使用加主机头名方法实现) 5、对站点进行安全管理(如浏览权限、帐号的使用、ip地址的设定) 三、实验要求: 一定要保证让别人正常的访问你建立的站点,并使实验结果达到预期的目的! 四、实验步骤: 1. 使用当地IP地址建立web站点 (1)准备工作: ①关闭Windows 防火墙

实验中,为了我们所建的站点能够被成功访问,先将Windows 防火墙关闭。如图: ②IIS功能设置 控制面板\所有控制面板项\程序和功能---“打开或关闭windows所有功能”: 出现了安装Windows功能的选项菜单,在“Internet信息服务”中手动选择需要的功能,如下图: ③下载“花生壳软件”到本地,申请免费域名mqqfhg。 这样,完成了前期的所有准备工作,开始进行web服务器的建设。 (2)开始建立web站点 ①创建web站点“酒窝” 打开“控制面板”——“管理工具”—“ Internet 信息服务(IIS)管理(本文来自:小草范文网:web服务器的配置实验报告)器”——右击“网站——“添加网站——选择“IP地址”及“物理路径”: 篇二:实验六web服务器配置实验报告 XX-XX学年第一学期课程实验报告课程名称:计算机网络 实验名称: 篇三:Web服务器的配置实验报告 实验5 Web服务器的配置

TCPUDP客户服务器实验报告

《计算机网络》课程综合实验报告之 TCP/UDP服务器端和客户端 程序设计 院系:信息工程学院 专业:电子信息工程 姓名:荆林风 学号:20142410232

一、实验目的 学习和掌握Linux环境下的TCP和UDP通信服务器和客户端的基本编程方法和运行机制,掌握TCP/UDP报文段的通信过程。 二、实验平台 win10操作系统下VMware Workstation工作环境下linux虚拟机,ubuntu操作系统 三、实验内容

1..编写Linux下TCP/UDP服务器套接字程序,程序运行时服务器 等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并向客户端发送字符串。 2.编写Linux下TCP/UDP客户端套接字程序,结合实验一的服务 器端程序,实现以下功能: 1客户根据用户提供的IP地址连接到相应的服务器; 2服务器等待客户的连接,一旦连接成功,则显示客户的IP 地址、端口号,并向客户端发送字符串; 3客户接收服务器发送的信息并显示。 四、实验原理 使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通

信,它分为服务器端和客户端两部分,其主要实现过程如图1.1所示。1、socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函数获得一个文件描述符。 ----------------------------------------------------------------- #include int socket(int family,int type,int protocol); 返回:非负描述字---成功-1---失败 ----------------------------------------------------------------- 第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接口类型不是原始套接口,那么第三个参数就为0。 2、connect函数:当用socket建立了套接口后,可以调用connect 为这个套接字指明远程端的地址;如果是字节流套接口,connect 就使用三次握手建立一个连接;如果是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据。 --------------------------------------------------------- -------- #include int connect(int sockfd,const struct sockaddr*addr,socklen_t addrlen);

实验1-木马病毒攻防

南昌航空大学实验报告 二〇一三年十一月八日 课程名称:信息安全实验名称:实验1木马攻击与防范 班级:xxx 姓名:xxx 同组人: 指导教师评定:签名: 一、实验目的 通过对木马的练习,使读者理解和掌握木马传播和运行的机制;通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识。 二、实验原理 木马的全称为特洛伊木马,源自古希腊神话。木马是隐藏在正常程序中的具有特殊功能的恶意代码,是具备破坏、删除和修改文件、发送密码、记录键盘、实施DOS攻击甚至完全控制计算机等特殊功能的后门程序。它隐藏在目标计算机里,可以随计算机自动启动并在某一端口监听来自控制端的控制信息。 1.木马的特性 木马程序为了实现其特殊功能,一般应该具有以下性质: (1)伪装性(2)隐藏性(3)破坏性(4)窃密性 2.木马的入侵途径 木马入侵的主要途径是通过一定的欺骗方法,如更改图标、把木马文件与普通文件合并,欺骗被攻击者下载并执行做了手脚的木马程序,就会把木马安装到被攻击者的计算机中。木马也可以通过Script、ActiveX及ASP、CGI交互脚本的方式入侵,攻击者可以利用浏览器的漏洞诱导上网者单击网页,这样浏览器就会自动执行脚本,实现木马的下载和安装。木马还可以利用系统的一些漏洞入侵,获得控制权限,然后在被攻击的服务器上安装并运行木马。3.木马的种类 (1)按照木马的发展历程,可以分为4个阶段:第1代木马是伪装型病毒;第2代木马是网络传播型木马;第3代木马在连接方式上有了改进,利用了端口反弹技术,例如灰鸽子木马;第4代木马在进程隐藏方面做了较大改动,让木马服务器端运行时没有进程,网络操作插入到系统进程或者应用进程中完成,例如广外男生木马。 (2)按照功能分类,木马又可以分为:破坏型木马;密码发送型木马;服务型木马;DOS 攻击型木马;代理型木马;远程控制型木马。 4.木马的工作原理 下面简单介绍一下木马的传统连接技术、反弹端口技术和线程插入技术。 (1)木马的传统连接技术;C/S木马原理如图1-1所示。第1代和第2代木马都采用的是C/S连接方式,这都属于客户端主动连接方式。服务器端的远程主机开放监听端目等待外部的连接,当入侵者需要与远程主机连接时,便主动发出连接请求,从而建立连接。 (2)木马的反弹端口技术;随着防火墙技术的发展,它可以有效拦截采用传统连接方式。但防火墙对内部发起的连接请求则认为是正常连接,第3代和第4代“反弹式”木马就是利用这个缺点,其服务器端程序主动发起对外连接请求,再通过某些方式连接到木马的客户端,如图1-2和图1-3所示。

实验二M精编B程序设计含实验报告

实验二M精编B程序设 计含实验报告 The following text is amended on 12 November 2020.

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器 (Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 21 421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y

简单的服务器客户端程序实验报告

简单的服务器客户端程 序实验报告 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

简单的客户 /服务器程序设计与实现 实验目的及要求: 1、熟悉Microsoft Visual Studio 2008编程环境。 2、了解TCP 与UDP 协议,以及它们之间的区别。 3、了解客户/服务器模型原理。 4、熟悉Socket 编程原理,掌握简单的套接字编程。 实验设备: 硬件:PC 机(两台以上)、网卡、已经设定好的以太网环境 软件:Microsoft Visual Studio 2008 实验内容及步骤: 1、编写用TCP 协议实现的Client 端和Server 端程序并调试通过。 程序分两部分:客户程序和服务器程序。 工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启 动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输 入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏 幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户 机收到数据后,将接收到的字符在屏幕上显示出来。

用户的输入来提示Client 端下一步将要进行操作。 所用函数及结构体参考: 1、创建套接字——socket() 功能:使用前创建一个新的套接字 格式:SOCKET PASCAL FAR socket(int af, int type, int procotol); 参数:af :代表网络地址族,目前只有一种取值是有效的,即AF_INET ,代表 internet 地址族; Type :代表网络协议类型,SOCK_DGRAM 代表UDP 协议,SOCK_STREAM 代表 TCP 协议; Protocol :指定网络地址族的特殊协议,目前无用,赋值0即可。 返回值为SOCKET ,若返回INVALID_SOCKET 则失败。 2、指定本地地址——bind() 功能:将套接字地址与所创建的套接字号联系起来。 格式:int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR * name, int namelen);

计算机病毒实验报告

计算机病毒实验报告 ——windows病毒实验 姓名:张艳秋 学号:081300607 班级:信安0802 指导老师:韦俊银 实验日期:2011.5.27

实验内容 1.PE文件感染实验(选) 2.暴风一号病毒 3.VBS病毒产生 4.宏病毒实验(选)

PE文件感染实验 实验目的 了解pe病毒的感染过程 实验环境 硬件设备 PC机一台(建议虚拟机) 软件工具 Office Word 2007 实验步骤 一:参照病毒感染PE文件的7个步骤,记录病毒是如何感染文件(文字和截屏形式) 病毒感染文件过程(以感染文件ebookcode.exe为例): 重定位,获得所有API地址: …… 通过软件Stud_PE可查看可执行文件ebookcode.exe的结构可查看文件内容: 1.判断目标文件开始的两个字节是否为“MZ”:

2.判断PE文件标记“PE”: 3.判断感染标记,如果已被感染过则跳出继续执行宿主程序,否则继续: 4.读取IMAGE_FILE_HEADER的NumberOfSections域,获得Data Directory (数据目录)的个数,(每个数据目录信息占8个字节): 5.得到节表起始位置。(数据目录的偏移地址+数据目录占用的字节数=节表起始位置):

6.得到节表的末尾偏移(紧接其后用于写入一个新的病毒节信息)节表起始位置+节的个数*(每个节表占用的字节数28H)=节表的末尾偏移 7.开始写入节表,感染文件: 二:在掌握Stud_PE工具的基础上,比较文件感染前后有哪些变化。 感染前:

感染后: 由上两图可以看出,感染前后有4处发生了变化: 1:PE文件头中入口点: 感染病毒后ebookedit.exe程序的入口点变成了病毒文件的入口点 2:PointerToRawData域值,即该文件的偏移量发生了变化; 3:imag的大小发生了变化; 4:sections的数量发生了变化。 由.exe文件感染前后变化可知,PE病毒感染过程即在文件中添加一个新节,

C程序设计上实验报告(完整版)

C语言程序设计上机实验报告 学院:机械工程学院 班级:机自161213 姓名:刘昊 学号:20162181310 实验时间:2017年3月6号 任课老师:张锐

C语言程序设计上机实验报告 实验一 一、实验名称: C程序的运行环境和运行C程序的方法 二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C 程序 三、实验内容: (1). 输入并运行一个简单的C程序。 (2). 设计程序,对给定的两个数求和。 (3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。 四、源程序代码: 代码1: 运行结果1:

程序分析1: 该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for 循环来进行整除过程的简写。 代码2: 运行结果2:

程序分析2: 简单的使用printf()和scanf()函数进行简单的数据运算。代码3: 运行结果3:

程序分析3: 使用if语句进行判断。 五.实验总结 C语言程序设计上机实验报告 实验二 一、实验名称:顺序结构程序设计 二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法, 熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。 三、实验内容: (1). 编写程序,实现小写字母转大写。

(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。 (3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。 (4). 编写程序,实现单字符getchar和putchar输入输出。 (5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。 四、源程序代码 代码1: 运行结果1: 程序分析1:

(完整版)《ftp服务器的配置》实验报告

实验报告 课程名称计算机网络基础实验项目 FTP服务器的配置 专业班级 0906603 姓名学号 27 指导教师陈伟宏老师成绩日期2011.11.12 一、实验目的 掌握如何在局域网内配置FTP服务器。 二、实验设备和环境 局域网内多台个人计算机、Windows 2003操作系统。 三、实验内容 1、安装IIS或Serv-U; 2、配置及管理FTP服务器; 3、使用FTP服务。 四、实验过程 1、安装IIS V5.1 for 2003 截图如下: 点“详细信息”

选择Internet 信息服务(IIS),点详细信息.再选择“文件传输协议(FTP)服务” 2、FTP服务器的配置 启动IIS信息管理:控制面板——管理工具——IIS信息管理,选择FTP站点。右键新建FTP站点。

3.右击FTP站点的默认FTP站点的属性设置主目录F:\学习资料 4、设置安全账户为只允许匿名连接

5、测试本地ftp站点:在浏览器中输入ftp://192.168.137.3访问结果如下:

五、实验心得 这次试验为FTP服务器的配置。总的来说,由于上次已经做过web服务器的配置,而ftp的配置跟它大致相同,所以过程相对来说还是比较顺利,出现的问题也不多。 不过在实验过程中,自己只是按照老师的《FTP服务器的配置示例》一步步去做,实验虽然很成功地完成了,但在实验过程中我感觉自己并没有完全的、真正的“消化”理解好其中的含义,于是又反复地理解了一下各个步骤的原理。 通过这次实验理解了FTP服务器的工作基本原理,以及匿名访问和非匿名访问的一些相关设置,文件具有长传和下载的权限,对文件安全性的控制等等。 同时,也让我又学会了一种传送文件的新方法:只需要通过构建局域网,然后通过FTP就可以实现资源共享啦。感觉非常有用。 能把知识用到实处才是真正的学好了知识,这也是我们做实验的真正目的。以后我会继续努力提高自己的动手操作能力,把知识付诸于实践,同时在实践中更加深刻地理解知识。

相关文档
相关文档 最新文档