发送和接收数据.ppt
《发送和接收数据.ppt》由会员分享,可在线阅读,更多相关《发送和接收数据.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章发送和接收数据通信应用软件设计目标目标 掌握本机字节顺序以及网络字节顺序的区别掌握C语言对齐规则以及由此导致的问题掌握消息成帧的两种方式:文本字符格式和数据结构体方式。掌握案例:一个简单的投票系统2概述任何交换信息的程序都必须就如何编码信息(表示为一个位序列)达成一致,即发送信息是以何种格式,接收者必须以同样的信息格式进行解析。这种关于通过通信信道交换的信息的形式和含义的协定称为协议(protocol)。大多数应用程序协议是依据由字段(field)序列构成的具体消息定义的。每个字段都包含一份特定的编码为位序列的信息。应用程序协议准确指定了发送者如何排列这些序列,以及接收者如何解释或
2、解析它们。自定义协议和标准协议。3整数的大小(1)在某种意义上,所有类型的信息最终都将被编码为固定大小的整数。C语言定义的几种整型:char short int longC语言没有指定这些整型的存储位数的准确大小,而是把它留给实现来完成。因此整型存储位数大小可能因平台而异。计算整型存储位数的大小是:sizeof,以字节为单位,例如:sizeof(int)。4整数的大小(2)通过TCP连接发送32位整数,在不同的平台上可能存在不同的解释,可以解释为int,也可以解释为long。C99语言标准规范以一组可选类型的形式提供了一种解决方案:int8_t int16_t int32_t int64_t。
3、这样可以有效地解决整数存储位数不一致的问题。5c99 c99是在c89的基础上发展起来的,增加了基本数据类型,关键字和一些系统函数等。其实在初学阶段C89(ANSI C)和C99的区别是不易察觉的,所以不必太在意这个。C99有一部分是对于大字符集的优化,还加入了一些数据库函数,是C89之后的标准,我们用的C是C89标准的,C+是C89编写的,目前的C99标准其实在以前的编译器中就或多或少的支持了,目前完全支持的有这些:GCC、Borland C+等。67字节排序(1)对于需要多个字节进行编码的整数,必须回答以哪种顺序发送字节的问题。例如:123456787654321L的十六机制为0 x000
4、0704885F926B100007048B185 F926大端小端8字节排序(2)网络字节顺序:使用大端字节顺序本机字节顺序:可能是大端也可能是小端顺序存储。本机字节顺序与网络字节顺序之间转换函数:htons htonl ntohs ntohl9符号性与符号扩展负数在C语言中采用补码表示。负数值赋给无符号的变量时将使负数的符号位变量值的一部分。在计算表达式的值时,首先要将变量的值加宽到本机(int)大小。例如 char a,b;sizeof(a+b)的值为4 10手工编码整数程序BruteForceCoding.c中的EncodeIntBigEndian使用大端表示法把任何给定的基本整数值作
5、为指定字节数的序列存放在内存中的指定位置。DecodeIntBigEndian方法用于处理将给定长度的字节序列解码为64位的整数,并将其解释为大端序列。BruteForceCoding.c11在流中包装TCP套接字(1)编码多个字节的整数可以使用流的方式在TCP套接字上传输。FILE工具流:通过fdopen()调用把一个或多个FILE流与套接字描述符相关联。FILE*fdopen(int socketdes,const char*mode);int fclose(FILE*stream);int fflush(FILE*stream);frwrite(.)fread()12在流中包装TCP套接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 发送 接收 数据
限制150内