实验报告课程名称:计算机网络编程 学 院:计算机科学与工程学院 专 业:计算机科学与技术 指导教师: 学生姓名:田茂
学 号:2013060103004 实验成绩:
日 期:2015年11月
电子科技大学计算机学院实验中心
电 子 科 技 大 学
实 验 报 告
一、实验二:(实验项目的名称):并发的面向连接的服务器软件的实现 二、实验室名称: 主楼A2-412 实验时间:第十一周周日9:00-12:00 三、实验目的:
1. 掌握TCP并发服务器端软件的工作原理。
2. 掌握针对ECHO服务的TCP并发服务器端软件的编程步骤和编程实现,并最终形成可执行代码。 四、实验原理:
Echo服务是一种非常有用的用于调试和检测的工具。这个协议的作用也十分简单,接收到什么原封发回就是了。 基于TCP协议的Echo服务有一种Echo服务被定义为在TCP协议上的面向连接的应用。主要用于调试和检测中。它可以基于TCP协议,服务器就在TCP端口7检测有无消息,如果使用UDP协议,基本过程和TCP一样,检测的端口也是7。是路由也是网络中最常用的数据包,可以通过发送echo包知道当前的连接节点有那些路径,并且通过往返时间能得出路径长度。 五、实验内容:
本实验主要完成针对ECHO服务的TCP服务器软件的实现,要求该服务器能并发地向多个客户提供ECHO服务,并发方式可自行选择多进程、多线程或单线程。实验内容包括:
1、编程环境的准备,要求在Linux操作系统下安装GCC或CC编译器。 2、利用Vi编辑器(或其他编辑软件)编写服务器软件代码 3、利用GCC编译器调试并形成可执行代码 4、运行服务器程序,验证功能实现。
5、在多个客户机上运行ECHO客户端软件,并发地向服务器请求ECHO服务。(也可以在同一台机器上运行多个ECHO客户程序副本) 6、程序框图如下:
六、实验器材(设备、元器件):
Ubtuntu14.04操作系统;gcc编译工具;ScureCRT工具 七、实验步骤:
本实验主要任务是编写完成基于TCP协议的服务器端网络程序,该网络服务器程序能并发向多个网络客户提供ECHO服务。
实验首先通过在服务器机器上启动基于TCP的ECHO服务,该主机运行Linux操作系统。然后在多个客户机上启动基于TCP的ECHO客户程序,这些客户程序可以并发地发起向ECHO服务器的连接请求,当网络连接建立后,用户就可以循环从键盘上输入任意字符串,并将字符串发往服务器,然后接收服务器返回的结果并打印。 具体的实验步骤如下:
1.在
Windows机上安装Linux环境, 如Vmware下安装Linux, 或装Ubuntu, 或
直接安装Linux hat等.
2.利用编辑器编写源程序,以下为
vi示例。
3.源代码如下:
#define _USE_BSD #include
extern int errno;
unsigned short portbase = 0; void reaper(int); int TCPechod(int fd);
int errexit(const char *format,...);
int passivesock(const char *service, const char *transport, int qlen); int passiveTCP(const char *service,int qlen);
int main(int argc, char *argv[]){ char *service= \ struct sockaddr_in fsin; unsigned int alen; int msock,ssock; switch(argc){ case 1: break; case 2:
service=argv[1]; break; default:
errexit(\ }
msock=passiveTCP(service,QLEN);
(void)signal(SIGCHLD,(__sighandler_t)QLEN);
while(1){
alen=sizeof(fsin);
ssock=accept(msock,(struct sockaddr *)&fsin,&alen); if(ssock<0){
if(errno==EINTR) continue; errexit(\ }
switch(fork()){ case 0:
(void)close(msock); exit(TCPechod(ssock)); default:
(void)close(ssock); break; case -1:
errexit(\ } } }