8.0网络编程基础

8.0网络编程基础

ID:33932261

大小:455.74 KB

页数:49页

时间:2019-03-01

8.0网络编程基础_第1页
8.0网络编程基础_第2页
8.0网络编程基础_第3页
8.0网络编程基础_第4页
8.0网络编程基础_第5页
资源描述:

《8.0网络编程基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、网络编程基础≤套接字编程基本流程≤套接字地址结构≤字节序列转换≤地址格式转换≤字节处理函数≤域名地址转换≤套接字基本函数≤数据报套接字函数一、套接字编程基本流程≤在Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符,是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且能够实现不同机器上的进程之间的通信。≤一个完整的Socket都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每一个Socket有一个本地

2、的唯一Socket号,由操作系统分配。一、套接字编程基本流程Linux支持6种类型的套接字接口,其中最常用的是2种:数据流套接字和数据报套接字。数据流套接字定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。©例子:一个简单的时间获取客户程序二、套接字地址结构≤进行套接字编程需要指定套接字的地址作为参数,不同的协议族有不同的地址结构定义方式。这些地址结构通常以sockaddr_开头,每一个

3、协议族有一个唯一的后缀,例如对于以太网,其结构名称为sockaddr_in。二、套接字地址结构≤通用套接字数据结构在中定义:≤struct sockaddr {≤unsigned short sa_family; /* address族, AF_xxx */≤char sa_data[14]; /* 14 bytes的协议地址*/≤};≤sa_family为套接字的协议簇地址类型,TCP/IP的协议对于IPv4地址类型为AF_INET。≤sa_data中存储具体的协议地址

4、,不同的协议簇有不同的地址格式。≤一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构sockaddr_in (在netinet/in.h中定义)二、套接字地址结构对于地址类型为AF_UNIX的协议地址,其在头文件定义如下:structsockaddr_un{short int  sin_family; /*Address family */unsigned short intsin_port;            /* Port number 2字

5、节*//*16-bitportnumber网络字节序*/struct in_addr sin_addr; /* Internet address 4字节*//*32位IP地址,网络字节序*/unsigned char sin_zero[ 8];          /* 填充0,以保持与通用套接字地址(structsockaddr)同样大小*/};其中,structin_addr{unsigned long s_addr;        /*32位IP地址,网络字节顺序*/}这两个数据结构类型(struc

6、t sockaddr和struct sockaddr_in )是等效的,可以相互转换,通常使用sockaddr_in更为方便。二、套接字地址结构对于地址类型为AF_INET的协议地址,其在头文件定义如下:structsockaddr_un{short int  sin_family; /*Address family */char sun_path[];                                 /* Path name*/};其中,sin_family为AF_

7、UNIX,sun_path为路径地址。三、字节序列转换网络中存在多种类型的机器,如基于Intel芯片的PC机和基于RISC芯片的工作站。这些不同类型的机器表示数据的字节顺序是不同的。考虑一个32位的整数(0x01234567)从地址0x100开始存储。它由4个字节组成,最高位字节是01,最低位字节是67。在内存中可以有两种方式来存储这个整数:(1)最低位字节存储在这个整数的开始地址位置,如下图所示;(2)最高位字节存储在这个整数的开始地址位置,如下图所示:第一种字节顺序是little-endian字节顺

8、序,基于Intel芯片的机器采用的是这种方式;第二种字节顺序是big-endian字节顺序,大多数基于RISC芯片的机器采用的是这种方式。主机存储数据的顺序被称为主机字节顺序。三、字节序列转换≤因为每一个机器内部对变量的字节存储顺序不同,而网络传输的数据大家是一定要统一顺序的(Internet规定网络字节顺序采用big‐endian字节顺序)。所以对与主机字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。三、字节序列转换≤套接字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。