1 / 14
文档名称:

网络编程要考虑的问题.ppt.ppt

格式:ppt   页数:14页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

网络编程要考虑的问题.ppt.ppt

上传人:lopytra 2015/9/15 文件大小:0 KB

下载得到文件列表

网络编程要考虑的问题.ppt.ppt

文档介绍

文档介绍:网络编程要考虑的问题
并发环境下的网络编程
异构环境下的网络编程
阻塞与非阻塞通信
服务类型的选择
差错处理
并发环境
1、函数可重入问题
2、资源共享访问控制,即互斥与同步
3、系统资源释放与回收
4、大量并发线程的创建管理
异构环境
字节顺序(Big endian , Little endian )
LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说 低位值小,就应该放在内存地址小的地方,也即内存地址低位 反之,高位值就应该放在内存地址大的地方,也即内存地址高位
BE big-endian 最直观的字节序 地址低位存储值的高位 地址高位存储值的低位 为什么说直观,不要考虑对应关系 只需要把内存地址从左到右按照由低到高的顺序写出 把值按照通常的高位到低位的顺序写出 两者对照,一个字节一个字节的填充进去
(1)主机字节序
不同的CPU上运行不同的操作系统,字节序也是不同的,参见下表。 处理器操作系统字节排序 Alpha 全部 Little endian HP-PA NT Little endian HP-PA UNIX Big endian Intelx86 全部 Little endian <-----x86系统是小端字节序系统 Motorola680x() 全部 Big endian MIPS NT Little endian MIPS UNIX Big endian PowerPC NT Little endian PowerPC 非NT Big endian <-----PPC系统是大端字节序系统 RS/6000 UNIX Big endian SPARC UNIX Big endian IXP1200 ARM核心全部 Little endian endian的字节顺序。
(续)
(2)例如
将0x1234abcd写入到以0x0000开始的内存中,则结果为 big-endian little-endian 0x0000 0x12 0xcd 0x0001 0x23 0xab 0x0002 0xab 0x34 0x0003 0xcd 0x12 x86系列CPU都是little-endian的字节序.
(3)网络字节序:big endian
TCP/IP中规定好的一种数据表示格式,与具体的CPU类型、操作系统等无关。
(4)字节顺转换函数
socket API提供了转换的函数有下面四个 htons 把unsigned short类型从主机序转换到网络序 htonl 把unsigned long类型从主机序转换到网络序 ntohs 把unsigned short类型从网络序转换到主机序 ntohl 把unsigned long类型从网络序转换到主机序
(续)
字的长度
不同的实现对于相同的数据类型可能有不同的表示长度。如,64位操作系统与32位操作系统中,类型long int的长度是不一样的。
16位平台
char 1个字节8位
short 2个字节16位
int 2个字节16位
long 4个字节32位
指针 2个字节
32位平台
char 1个字节8位
short 2个字节16位
int 4个字节32位
long 4个字节
long long 8个字节
指针 4个字节
64位平台
char 1个字节
short 2个字节
int 4个字节
long 8个字节(区别)
long long 8个字节
指针 8个字节(区别)
(续)
字节定界问题
一般情况下,操作系统在分配内存时,数据结构以4字节定界。
struct s{ int a; char b; double c; union d { char e[6]; int f[3]; }
}
网络协议的设计中,常常需要填充一些无用的字节以满足四字节定界,从而简化协议的实现。
阻塞与非阻塞通信
在阻塞模式下,利用TCP协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,则应用进程将阻塞等待直到协议有可用的空间。而在非阻塞模式下,调用将直接返回而不需等待。在应用进程调用接收函数接收报文时,如果是在阻塞模式下,若没有到达的数据,则调用将一直阻塞直到有数据到达或出错;而在非阻塞模式下,将直接返回而不需等待。
对于UDP 协议而言,因为UDP没有发送缓存,所有UDP协议即使在阻塞模式下也不会发生阻塞。
对于面向连接的协议,在连接建立阶段,阻塞与非阻塞也表现不一。在阻塞模式下,如果没有连接请求到达,则等待连接调用将阻塞直到有连接请求到达;但在非阻塞模式下,如果没有连接请求到达,等待连接调用将直接返回。
在连接建立阶段,不管是