哈工大嵌入式系统软件作业 - 基于TCP IP协议的CS通信例程
基于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) 运行结果 服务器端:
客户端:
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




