- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用层系统服务析实验报告
综合性实验项目简介
学院名称(公章): 软件学院 2014-2015学年第 一 学期 填表日期:
实验课程名称 TCP/IP协议分析 实验项目名称 应用层系统服务分析实验 实验项目性质 1、综合性√ 2、设计性 主讲教师 开课年级 2012 开课专业 12网络工程 实验地点 开课日期 2014年 9月28日至 2014 年12月28日 开课时间 第14周 星期二3-4节 实验项目简介:
实验目的
(1)掌握单用户客户端与服务器的连接和数据处理;
(2)理解并掌握Socket模型
(3)掌握Linux平台网络数据的传送方法。
实验内容
(1)编写基于流套接字的TCP/IP通信程序;
(2)编写基于流套接字的网络通信原型系统;
(3)要求至少综合使用到实验目的中提到的三条或三条以上内容。
实验条件
学院提供网络实验室,1台/学生微型计算机,安装有协议分析综合教学系统。
实验原理
使用TCP套接字编程可以基于TCP/IP协议面向连接的协议,它分为客户端和服务器端,主要的实现过程为:
服务器端:
使用socket()函数创建套接字。
将创建的套接字绑定到指定的地址结构。
Listen()函数设置套接字为监听状态,使服务器进入被打开状态。
接受客户端的请求,建立连接
接受,应答客户端的数据请求
终止连接
客户端:
使用socket()函数创建套接字。
调用connect()函数建立一个与TCP服务器的连接
发送数据请求,接受服务器的数据应答
终止连接
流程图如下:
server
socket()
bind ()
listen ()
accept()
client
阻塞直到接受客户 socket
编请求 os自动调
用bind()函
三次握手 connect() 数解析出IP随
机分配一个闲
read() 数据请求 write() 置的编口绑定
处理请求
write() 数据响应 read()
关闭连接
close close()
服务器端代码:
server.c
#include unistd.h
#includestdlib.h
#includestring.h
#include stdio.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include arpa/inet.h
#includesys/wait.h
#includenetdb.h
#define PORT 1234
#define BACKLOG 2
#define MAXCHARSIZE 1000
void process_client(int connetfd,struct sockaddr_in client);
int main(void){
int listenfd,connectfd;
struct sockaddr_in server,client;
int sin_size;
int opt=SO_REUSEADDR;
pid_t pid;
if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror(Create socket failed.);
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,(struct sockaddr*)server,sizeof(struct sockaddr))==-1){
perror(Bind error.);
exit(-1);
}
if(listen(listenfd,BACKLOG)==-1){
perror(listen error.);
exit(-1);
}
sin_size=sizeof(struct sockaddr_in);
您可能关注的文档
- 广东省教育技术中级培训结业测试(609页加强版,使用时请用查找).doc
- 广东省新兴县惠学2013届高三政治一轮复习课件 课时37 唯物辩证法的发展观 新人教版.doc
- 广东省梅县东山09-10学年高一下期末考试--生物文.doc
- 广东省梅山重点2012届高三政治一轮复习《经济生活》第十一课测练题.doc
- 广东省梅州市培学七年级数学下册_《第二章_平行线与相交线》知识要点梳理_北师大版.doc
- 广东省汕头市22-2013学年高二下学期期末教学质量监测物理试题 Word版含答案[来源:学优高考网355840].doc
- 广东省江门市九英语《Unit 3 English Around the World》学案 人教新目标版.doc
- 广东省清远市23-2014学年度高二第二学期期末考试政治试题.doc
- 广东省河源市22-2013学年高一上期末数学试题及答案 - 副本.doc
- 广东省肇庆市广中2014-2015学年高二数学上学期10月月考试卷 理(含解析).doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)