《(39)--6.5 网络编程基础.ppt》由会员分享,可在线阅读,更多相关《(39)--6.5 网络编程基础.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网络编程基础学习目标掌握掌握Socket编程的基础知识和相关的函数编程的基础知识和相关的函数网络编程基础网网络络编程是编程是Linux环境编程的环境编程的 个重要部分。能否熟练个重要部分。能否熟练掌握掌握Linux环境下的网络编程,已经成为了一个优秀环境下的网络编程,已经成为了一个优秀Linux研发工程师的标志。研发工程师的标志。随着近几年随着近几年Linux在服务在服务器领域的异军突起,器领域的异军突起,Linux环境下的网络编程就变得环境下的网络编程就变得尤为重要了尤为重要了网络编程基础Linux 环境下使用套接字进行进程之间的通信。环境下使用套接字进行进程之间的通信。通过套接字接口,通过
2、套接字接口,其其他进程的位置对于应用程序来讲是透明的。他进程的位置对于应用程序来讲是透明的。套接字代表通信的端点,套接字代表通信的端点,也就是说两个端点应该各有一个套接字才可以。也就是说两个端点应该各有一个套接字才可以。两个套接字建立了通两个套接字建立了通信双方的桥梁,信双方的桥梁,而套接字就是这座桥的入口而套接字就是这座桥的入口套接字同样拥有一个套接字描述符,套接字同样拥有一个套接字描述符,应用程序可以像操作文件一样操应用程序可以像操作文件一样操作一个套接字。因此在进行网络通信的过程中,作一个套接字。因此在进行网络通信的过程中,用户感觉就像在操作用户感觉就像在操作一个文件一样。这正是一个文件
3、一样。这正是Linux将外部设备抽象为一个文件的好处。将外部设备抽象为一个文件的好处。字节序字节序由于不同计算机系统采用不同的字节序存储数据,同样一个由于不同计算机系统采用不同的字节序存储数据,同样一个4字字节的节的32位整数,在内存中存储的方式就不同,这称为本地字节位整数,在内存中存储的方式就不同,这称为本地字节序。字节序分为小端字节序和大端字节序,序。字节序分为小端字节序和大端字节序,Intel处理器大多数处理器大多数使用大端字节序,使用大端字节序,Motorola处理器大多数使用小端字节序。小处理器大多数使用小端字节序。小端字节序是指低位字节存放在内存的低地址处,于此相反,大端端字节序是
4、指低位字节存放在内存的低地址处,于此相反,大端字节序指的是高位字节存储在内存的低地址处。字节序指的是高位字节存储在内存的低地址处。网络字节序统一采用大端字节序网络字节序统一采用大端字节序字节序字节序当两台采用不同字节序的主机通信时,在发送当两台采用不同字节序的主机通信时,在发送数据之前,必须先将本地字节序转化为网络字数据之前,必须先将本地字节序转化为网络字节序再进行发送;在收到数据之后,应先将网节序再进行发送;在收到数据之后,应先将网络字节序转化为本地字节序再进行后续使用。络字节序转化为本地字节序再进行后续使用。本地字节序转换成网络字节序本地字节序转换成网络字节序函数函数htonl()和和ht
5、ons()用于将本地字节序转化为网络用于将本地字节序转化为网络字节序,字节序,htonl()主要用于将主要用于将32位的整型数据从本地位的整型数据从本地字节序转化为网络字节序,而字节序转化为网络字节序,而htons()主要用于将主要用于将16位的整型数据从本地字节序转化为网络字节序。位的整型数据从本地字节序转化为网络字节序。网络字节序转换成本地字节序网络字节序转换成本地字节序函数函数ntohl()和和ntohs()用于将网络字节序转化为本地用于将网络字节序转化为本地字节序,字节序,ntohl()主要用于将主要用于将32位的整型数据从网络位的整型数据从网络字节序转化为本地字节序,而字节序转化为本
6、地字节序,而ntohs()主要用于将主要用于将16位的整型数据从网络字节序转化为本地字节序。位的整型数据从网络字节序转化为本地字节序。in_addr结构结构网络环境中每一台主机都有一个唯一标识自网络环境中每一台主机都有一个唯一标识自己的地址,己的地址,这个地址称为这个地址称为ip地址。地址。Linux 中中使用使用 in_addr结构表示一个结构表示一个 ip地址地址in_addr结构结构当使用唯一的当使用唯一的ip地址定位到通信的目标主机后,还需要地址定位到通信的目标主机后,还需要确定到底是主机中的哪个进程需要通信。使用端口号可确定到底是主机中的哪个进程需要通信。使用端口号可以解决该问题,每
7、一个进程都唯一对应一个以解决该问题,每一个进程都唯一对应一个16位的端口位的端口号。因此,在网络环境中,一个号。因此,在网络环境中,一个IP地址加上一个端口号,地址加上一个端口号,可以唯一的确定一台织机上的进程。可以唯一的确定一台织机上的进程。ip地址是以二进制数的形式存储在地址结构中的,需地址是以二进制数的形式存储在地址结构中的,需要输出并观察该地址时未免有些不便,对于程序员要输出并观察该地址时未免有些不便,对于程序员来讲,点分十进制表示的来讲,点分十进制表示的ip地址才更直观,因此地址才更直观,因此Linux提供了提供了ip地址的格式转换函数。地址的格式转换函数。Inet_ntop()函数
8、将二进制地址转换为字符串形式的地址,()函数将二进制地址转换为字符串形式的地址,成成功则返回该字串的首地址:功则返回该字串的首地址:二进制地址格式错误(例如,二进制地址格式错误(例如,domain参数是参数是AF_INET,却使用却使用 128 位的位的地址地址)则则返回返回0,如,如函数出错则返回函数出错则返回1。inet_pton()函数是函数是 inet_ntop 的逆运算,该函数将字符串形式的的逆运算,该函数将字符串形式的地址转换为二进制形式地址转换为二进制形式 的地址。的地址。Socket编程的基础编程的基础知识知识Socket编程相关编程相关的函数的函数-13-小结-14-作业与拓展查阅资料查阅资料,加深,加深对对Socket编程的基础知识编程的基础知识的的理解理解和和认识认识。查阅资料查阅资料,掌握掌握Socket编程编程相关的相关的函数函数的使用的使用-15-