1 / 14
文档名称:

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

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

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

分享

预览

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

上传人:allap 2016/10/2 文件大小:247 KB

下载得到文件列表

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

相关文档

文档介绍

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