资源描述:
《应用层系统服务分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、综合性实验项目简介学院名称(公章):软件学院2014-2015学年第一学期填表日期:实验课程名称TCP/IP协议分析实验项目名称应用层系统服务分析实验实验项目性质1、综合性√2、设计性主讲教师开课年级2012开课专业12网络工程实验地点开课日期2014年9月28日至2014年12月28日开课时间第14周星期二3-4节实验项目简介:实验目的(1)掌握单用户客户端与服务器的连接和数据处理;(2)理解并掌握Socket模型(3)掌握Linux平台网络数据的传送方法。实验内容(1)编写基于流套接字的TCP
2、/IP通信程序;(2)编写基于流套接字的网络通信原型系统;(3)要求至少综合使用到实验目的中提到的三条或三条以上内容。实验条件学院提供网络实验室,1台/学生微型计算机,安装有协议分析综合教学系统。实验原理使用TCP套接字编程可以基于TCP/IP协议面向连接的协议,它分为客户端和服务器端,主要的实现过程为:服务器端:(1)使用socket()函数创建套接字。(2)将创建的套接字绑定到指定的地址结构。(3)Listen()函数设置套接字为监听状态,使服务器进入被打开状态。(4)接受客户端的请求,建立连
3、接(5)接受,应答客户端的数据请求(6)终止连接客户端:(1)使用socket()函数创建套接字。(2)调用connect()函数建立一个与TCP服务器的连接(3)发送数据请求,接受服务器的数据应答(4)终止连接流程图如下:serversocket()bind()listen()accept()client阻塞直到接受客户socket编请求os自动调用bind()函三次握手connect()数解析出IP随机分配一个闲read()数据请求write()置的编口绑定处理请求write()数据响应rea
4、d()关闭连接closeclose()服务器端代码:server.c#include#include#include#include#include#include#include#include#include#include#definePORT1234#defineB
5、ACKLOG2#defineMAXCHARSIZE1000voidprocess_client(intconnetfd,structsockaddr_inclient);intmain(void){intlistenfd,connectfd;structsockaddr_inserver,client;intsin_size;intopt=SO_REUSEADDR;pid_tpid;if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("C
6、reatesocketfailed.");exit(-1);}setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(listenfd,(structsockaddr*
7、)&server,sizeof(structsockaddr))==-1){perror("Binderror.");exit(-1);}if(listen(listenfd,BACKLOG)==-1){perror("listenerror.");exit(-1);}sin_size=sizeof(structsockaddr_in);while(1){if((connectfd=accept(listenfd,(structsockaddr*)&client,&sin_size))==-1){
8、perror("accepterror.");exit(-1);}if((pid=fork())>0){close(connectfd);continue;}elseif(pid==0){close(listenfd);process_client(connectfd,client);exit(1);}else{perror("Forkerror.");exit(0);}}close(listenfd);}voidprocess_client(intconnectfd,stru