《UNIX网络编程 卷1:套接字联网API(第3版)》——1.11 64位体系结构

简介: 处理这些情况的办法是使用专门设计的数据类型。套接字API对套接字地址结构的长度使用socklen_t数据类型,XTI则使用t_scalar_t和t_uscalar_t数据类型。不把这些值由32位改为64位的理由是易于为那些已在32位系统中编译的应用程序提供在新的64位系统中的二进制代码兼容性。

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第1章,第1.11节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.11 64位体系结构

20世纪90年代中期到未期开始出现向64位体系结构和64位软件发展的趋势。其原因之一是在每个进程内部可以由此使用更长的编址长度(即64位指针),从而可以寻址很大的内存空间(超过232字节)。现有32位Unix系统上共同的编程模型称为ILP32模型,表示整数(I)、长整数(L)和指针(P)都占用32位。64位Unix系统上变得最为流行的模型称为LP64模型,表示只有长整数(L)和指针(P)占用64位。图1-17对这两种模型进行了比较。
screenshot

从编程角度看,LP64模型意味着我们不能假设一个指针能存放在一个整数中。我们还必须考虑LP64模型对现有API的影响。

ANSI C创造了size_t数据类型,它用于作为malloc的唯一参数(待分配的字节数),或者作为read和write的第三个参数(待读或写的字节数)。在32位系统中size_t是一个32位值,但是在64位系统中它必须是一个64位值,以便发挥更大寻址模型的优势。这意味着64位系统中也许含有一个把size_t定义为unsigned long的typedef指令。联网API存在如下问题:POSIX的某些草案规定,存放套接字地址结构大小的函数参数具有size_t数据类型(如bind和connect的第三个参数)。某些XTI结构也含有数据类型为long的成员(如t_info和t_opthdr结构)。如果这些规定不加修改,当Unix系统从ILP32模型转变为LP64模型时,size_t和long都将从32位值变为64位值。这两个例子实际上并不需要使用64位的数据类型:套接字地址结构的长度最多也就几百个字节,给XTI的结构成员使用long数据类型则是个错误。

处理这些情况的办法是使用专门设计的数据类型。套接字API对套接字地址结构的长度使用socklen_t数据类型,XTI则使用t_scalar_t和t_uscalar_t数据类型。不把这些值由32位改为64位的理由是易于为那些已在32位系统中编译的应用程序提供在新的64位系统中的二进制代码兼容性。

相关文章
|
10天前
|
存储 网络协议 网络性能优化
一文详细理解计算机网络体系结构(考试和面试必备)
这篇文章提供了C++基础知识的快速概述,包括C++的特点、面向对象设计、组成部分、标准、学习建议、应用领域、源文件、编译器、类与对象、编译执行步骤、分号与块、标识符、基本数据类型、typedef、枚举类型、变量定义与声明等。
19 0
一文详细理解计算机网络体系结构(考试和面试必备)
|
1月前
|
网络协议 算法 网络性能优化
C语言 网络编程(十五)套接字选项设置
`setsockopt()`函数用于设置套接字选项,如重复使用地址(`SO_REUSEADDR`)、端口(`SO_REUSEPORT`)及超时时间(`SO_RCVTIMEO`)。其参数包括套接字描述符、协议级别、选项名称、选项值及其长度。成功返回0,失败返回-1并设置`errno`。示例展示了如何创建TCP服务器并设置相关选项。配套的`getsockopt()`函数用于获取这些选项的值。
|
2月前
|
网络协议 Java
一文讲明TCP网络编程、Socket套接字的讲解使用、网络编程案例
这篇文章全面讲解了基于Socket的TCP网络编程,包括Socket基本概念、TCP编程步骤、客户端和服务端的通信过程,并通过具体代码示例展示了客户端与服务端之间的数据通信。同时,还提供了多个案例分析,如客户端发送信息给服务端、客户端发送文件给服务端以及服务端保存文件并返回确认信息给客户端的场景。
一文讲明TCP网络编程、Socket套接字的讲解使用、网络编程案例
|
5月前
|
网络协议 算法 网络性能优化
网络编程:TCP/IP与套接字
网络编程:TCP/IP与套接字
|
5月前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
61 7
|
5月前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络 第二章 计算机网络体系结构(习题)
计算机网络 第二章 计算机网络体系结构(习题)
|
5月前
|
移动开发 网络协议 程序员
计算机网络:分层体系结构
计算机网络:分层体系结构
85 2
|
4月前
|
网络协议 数据安全/隐私保护 网络架构
计算机网络——第一章体系结构相关习题及详细解析
计算机网络——第一章体系结构相关习题及详细解析
33 0
|
4月前
|
网络协议 网络架构
计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)
计算机网络——计算机网络体系结构(4/4)-计算机网络体系结构中的专用术语(实体、协议、服务,三次握手‘三报文握手’、数据包术语)
92 0
|
4月前
|
网络协议 网络架构
计算机网络——计算机网络体系结构(3/4)-计算机网络体系结构分层思想举例
计算机网络——计算机网络体系结构(3/4)-计算机网络体系结构分层思想举例
37 0
下一篇
无影云桌面