哈工大嵌入式系统软件作业 - 基于TCP IP协议的CS通信例程
更新时间:2024-01-04 04:20: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通信例程01-04
北京市门头沟区2013-2014学年八年级下期末考试数学试卷及答案01-28
大唐(XX)XX水电有限公司安全生产工作规定(试行)01-24
我的宠物猫作文500字06-16
全国出版社青年编校技能竞赛试题答案及讲评03-18
财务管理第一章教案09-02
2016届高考化学大一轮复习第五章专题集锦训练鲁科版06-18
双轮平衡车毕业论文 - 图文10-06
树立企业形象 提升企业竞争力08-27
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 哈工大
- 嵌入式
- 作业
- 基于
- 协议
- 通信
- 系统
- 软件
- TCP
- 山东省泗水县第一中学高二化学下学期6月月考试卷(含解析)
- 2018年张家界市中考数学试卷及答案解析
- 2018-2019201X年4月大学生入党自传4word版本(3页)
- 新视野大学英语第三版第三册课后习题答案
- 路书(方案3)
- 广东省深圳市宝安区华胜实验中学2015-2016学年七年级月考生物试卷 doc
- PLC实训
- 北京市丰台区2013届高三(3月)统一练习(一)英语试题 - 图文
- 双汇集团发展战略规划书
- 2019-2020年九年级总复习练习册:第22讲 专题一 物质的组成和结构
- 冠心病支架植入术护理常规
- 考场作文的基本结构
- 上海市2018年中考物理真题试题(无答案) - 图文
- 谈西方电视的互联网思维(电视研究)
- unit 1 helping those in need教案
- 大型数据库课程设计指南- 淮阴工学院计算机工程实验中心--首页
- 报关实务期末试题4
- 北京市海淀区2018届高三第一学期期末考试英语试题 - 图文
- 小学五年级语文学业质量测评实验方案
- 基于AD9854的DDS外围电路设计和程序 - 图文