下载此文档

网络流程 - 网络流程.ppt


文档分类:IT计算机 | 页数:约25页 举报非法文档有奖
1/25
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/25 下载此文档
文档列表 文档介绍
嵌入式网络流程嵌入式网络流程主讲:谭英柯主讲:谭英柯 tyk308314968@ tyk308314968@ QQ QQ: :308314968 308314968 二二○○一一○○年七月年七月 socket 概念?在Linux 中的网络编程是通过 socket 接口来进行的。 socket 是一种特殊的 I/O 接口,它也是一种文件描述符。它是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信, 而且通过网络能够在不同机器上的进程之间进行通信。?每一个 socket 都用一个半相关描述{协议、本地地址、本地端口} 来表示;一个完整的套接字则用一个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。 socket 也有一个类似于打开文件的函数调用,该函数返回一个整型的 socket 描述符,随后的连接建立、数据传输等操作都是通过 socket 来实现的。(1)流式 socket (SOCK_STREAM ) 流式套接字提供可靠的、面向连接的通信流;它使用 TCP 协议,从而保证了数据传输的正确性和顺序性。(2)数据报 socket (SOCK_DGRAM ) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议 UDP 。(3)原始 socket 原始套接字允许对底层协议如 IP或ICMP 进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。 socket 信息数据结构 struct sockaddr { unsigned short sa_family ; /*地址族*/ char sa_data[14]; / * 14 字节的协议地址,包含该 socket 的 IP地址和端口号。*/ }; struct sockaddr_in { short int sa_family ; /*地址*/ unsigned short int sin_port ; /*端口号*/ struct in_addr sin_addr ; /* IP地址*/ unsigned char sin_zero[8]; / *填充 0 以保持与 struct sockaddr 同样大小*/ };数据存储优先顺序的转换?计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式) 。 上数据以高位字节优先顺序在网络上传输,因此在有些情况下,需要对这两个字节存储优先顺序进行相互转化。这里用到了四个函数: htons ()、 ntohs ()、 htonl ()和 ntohl ()。这四个地址分别实现网络字节序和主机字节序的转化,这里的 h代表 host ,n代 work ,s代表 short ,l代表 long 。通常 16位的 IP 端口号用 s代表,而 IP地址用 l来代表。地址格式转化( 1) ?通常用户在表达地址时采用的是点分十进制表示的数值(或者是以冒号分开的十进制 IPv6 地址),而在通常使用的 socket 编程中所使用的则是二进制值,这就需要将这两个数值进行转换。这里在 IPv4 中用到的函数有 inet_aton ()、 inet_addr ()和 inet_ntoa (),而 IPv4 和 IPv6 兼容的函数有 inet_pton ()和 inet_ntop ()。地址格式转化( 2) 名字地址转化(1) ?通常,人们在使用过程中都不愿意记忆冗长的 IP地址,尤其到 IPv6 时,地址长度多达 128 位,那时就更加不可能一次次记忆那么长的 IP地址了。因此,使用主机名将会是很好的选择。?在Linux 中,同样有一些函数可以实现主机名和地址的转化,最为常见的有 gethostbyname ()、 gethostbyaddr ()和getaddrinfo ()等,它们都可以实现IPv4 和IPv6 的地址和主机名之间的转化。其中 gethostbyname ()是将主机名转化为 IP地址, gethostbyaddr ()则是逆操作,是将 IP地址转化为主机名,另外 getaddrinfo ()还能实现自动识别 IPv4 地址和 IPv6 地址。名字地址转化(2)- 主要数据结构 struct hostent { char * h_name ;/*正式主机名*/ char ** h_aliases ;/*主机别名*/ int h_addrtype ;/*地址类型*/ int h_length ;/*地址字节长度*/ char ** h_addr_list ;/*指向 IPv4 或 IPv6 的地址指针数组*/ } str

网络流程 - 网络流程 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数25
  • 收藏数0 收藏
  • 顶次数0
  • 上传人875845154
  • 文件大小0 KB
  • 时间2016-06-02
最近更新