哈工大嵌入式系统软件作业 - 基于TCP IP协议的CS通信例程
更新时间:2024-03-21 00:05:01 阅读量: 综合文库 文档下载
- 哈工大嵌入式实验报告推荐度:
- 相关推荐
基于TCP协议的C/S通信例程
一、引言
TCP协议是面向“流”的传输层网络协议。相比其他传输层协议具有数据传输可靠性高、使用方便等优点,广泛应用于网络通信中。本文使用Socket接口API实现了TCP协议最基本的客户端、服务器网络通信模型,对网络编程接口有了进一步的认识。
客户端的作用是从命令行参数中获得一个字符串并利用网络接口发送给服务器,然后接收经过服务器处理后的字符串并打印;服务器的作用是接收从客户端传来的字符串,并将其中的每个字符转换为大写之后回送给客户端。
为了模拟不同主机之间的通信,需要分别编写客户端、服务器的代码。客户端需要使用loopback地址(127.0.0.1)与服务器通信从而能够在同一台主机上观察通信效果。本文的客户端、服务器选择使用TCP协议来实现,TCP是一种面向流的高可靠性传输层协议,其基本编程模型如图1所示:
TCP Serversocket()bind()listen()accept()TCP Clientsocket()阻塞等待连接建立连接connetc()read()write()数据数据write()read()close()
close()图1 TCP编程模型
二、程序编写
本文严格按照图1所示的流程编写了客户端、服务器程序。
服务器的编程要点是:
? 调用socket()函数建立套接口描述符,在参数中指定网络层使用IPv4协
议、传输层使用TCP协议。从下文可以看到,该套接口描述符用于监听来自指定端口和IP地址的网络连接请求,并不用于具体的通信过程。 ? 建立服务器的sockaddr_in结构,该结构是IPv4的地址结构。客户端需
要知道服务器的网络地址和端口号才能向特定服务器发起连接请求。因此服务器程序所监听的端口号通常是固定不变的。此处在sockaddr_in结构中指定服务器端口号为8000。调用bind()函数将上文中的套接口描述符与该地址结构绑定。 ? 调用listen()函数使得上文中的套接口描述符成为被动接受连接的服务
器程序,指定连接队列长度为20。 ? 调用accept()使服务器监听socket描述符所指定IP地址和端口号。如果
此时客户端发起了连接请求,而且“三次握手”过程顺利完成,accept()会返回一个新建的socket描述符。应用程序可以使用该描述符完成与服务器间的具体通信任务。 ? 使用accept()返回的描述符、调用read()函数读取客户端发来的字符串并
保存到本地缓冲区。read()会阻塞直到客户端发来字符串,返回值为实际传输的字节数。使用toupper()函数转换为大写后发送回客户端。
客户端的编程要点是:
? 从命令行参数中获取用户输入的字符串并存入本地缓冲区。若输入格式
不符合要求则打印正确的使用方式作为提示。 ? 调用socket()函数建立套接口描述符,后面将使用此描述符与服务器通
信。 ? 建立sockaddr_in结构,该结构用于描述服务器的地址结构;此处指定
服务器的IP地址为127.0.0.1;调用connect()函数使用客户端建立的socket描述符与sockaddr_in指定的服务器通信,以完成“三次握手”过程。 ? 调用write()将缓冲区的字符串发送给服务器。
? 调用read()接收经过服务器处理的字符串,并调用write()将这些字符串
显示在标准输出。 三、编译与运行 (1) 运行环境
linux内核版本:3.11.10-301.fc20.i686+PAE gcc编译器版本:4.8.2 20131017 (Red Hat 4.8.2-1) (2)编译过程 gccserver.c –o server
gccclient.c –o client (2) 运行结果 服务器端:
客户端:
正在阅读:
哈工大嵌入式系统软件作业 - 基于TCP IP协议的CS通信例程03-21
构建和谐校园心得体会05-13
山东省泗水县第一中学高二化学下学期6月月考试卷(含解析)03-09
综合英语二级试卷09-21
土地征收两费分配及管理办法06-09
2018年春季-思想道德修养与法律基础--中南大学网络教育在线考试03-08
苏教版小学科学四年级期末试卷及答案109-23
《给水排水管网系统》课程教学大纲01-01
FL15111702+WEB日志挖掘技术的研究及应用06-05
exosip2协议栈原理分析以及总结05-02
- 小学生造句大全
- 增压泵投资项目可行性研究报告(模板)
- 高中语文人教版粤教版必修1-5全部文言文知识点归纳
- 两学一做专题民主生活会组织生活会批评与自我批评环节个人发言提
- 管理处环境保洁工作操作标准作业指导书
- 2012六一儿童节活动议程 - 图文
- 移树申请报告
- 《贵州省市政工程计价定额》2016定额说明及计算规则
- 计算机长期没有向WSUS报告状态
- 汉语拼音教学策略研究
- 发展西部领先的航空货运枢纽
- 司法所上半年工作总结4篇
- 如何提高银行服务水平
- 发电厂各级人员岗位职责
- 丰田汽车的外部环境分析
- 2017—2018年最新冀教版四年级数学下册《混合运算》教案精品优质
- 中建八局样板策划 - 图文
- 戚安邦《项目管理学》电子书
- 2015年高级项目经理笔记
- 弯桥的设计要点
- 哈工大
- 嵌入式
- 作业
- 基于
- 协议
- 通信
- 系统
- 软件
- TCP
- 金典艺术生高考数学复习资料--5 数列
- 新视野大学英语第三版第三册课后习题答案
- 2018-2019201X年4月大学生入党自传4word版本(3页)
- 实验二、 基本表和视图的连接查询 统计查询和嵌套查询
- 灌云县国有土地上房屋征收与补偿若干问题的规定(已出台批准文件
- 加油站投诉处理办法
- 七年级英语下册Unit9Whatdoeshelooklike说课稿2(新版)人教新目
- 毕业设计总结
- 圣诞晚会主持词(1)与圣诞晚会主持词(节选)(1)汇编
- 新人教版八年级地理下册复习资料完整版(2019年) - 图文
- 最新人教版四年级数学上册期末试卷
- 1.4.1 有理数的乘法(2)教案
- 挂职干部民情日记
- 2018年张家界市中考数学试卷及答案解析
- 北京市丰台区2013届高三(3月)统一练习(一)英语试题 - 图文
- 上海市2018年中考物理真题试题(无答案) - 图文
- 生态系统
- 山东省泗水县第一中学高二化学下学期6月月考试卷(含解析)
- 乡安全生产工作总结
- java题库