《高级套接字》PPT课件.ppt
《《高级套接字》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级套接字》PPT课件.ppt(36页珍藏版)》请在三一办公上搜索。
1、第11章 高级套接字,前面几章内容对通用的UDP、TCP的程序设计方法进行了介绍,本章介绍高级套接字的编程。包含UNIX域的函数、广播、多播、数据链路层的程序设计等在Linux网络程序设计中比较常用的方法,主要有如下内容。UNIX编程:介绍AF_UNIX协议族类型,特别是结构struct sockaddr_un、编程方法。广播的知识:介绍广播的概念、如何进行广播的编程及一个简单的例子。多播的知识:介绍多播的概念和多播的地址,并介绍多播的客户端和服务器的编程实例。数据链路层的访问:介绍SOCK_PACKET协议类型,如何获得从数据链路层到应用层的数据。,11.1 UNIX域函数,UNIX域的协议
2、族是在同一台主机上的客户/服务器通信时使用的一种方法。相对其他方法(例如进程间通信的管道),它在形式上与传统套接字API的调用方法相同。UNIX域有两种类型的套接字:字节流套接字和数据报套接字,字节流套接字类似于TCP,数据报套接字类似于UDP。UNIX域的套接字有如下的特点值得注意。UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。UNIX域套接字可以在同一台主机上各进程之间传递描述符。UNIX域套接字与传统套接字的区别是用路径名来表示协议族的描述。,11.1.1 UNIX域函数的地址结构,UNIX域的地址结构在文件中定义,结构的原型如下:#define UNIX
3、_PATH_MAX108struct sockaddr_un sa_family_t sun_family;/*AF_UNIX协议族名称*/char sun_pathUNIX_PATH_MAX;/*路径名*/;UNIX域地址结构成员变量sun_family的值是AF_UNIX或者AF_LOCAL。sun_path是一个路径名,此路径名的属性为0777,可以进行读写等操作。结构sockaddr_un的长度使用宏SUN_LEN定义,默认大小为108,SUN_LEN宏的定义如下:#define SUN_LEN(ptr)(size_t)(struct sockaddr_un*)0)-sun_path)
4、+strlen(ptr)-sun_path),11.1.2 套接字函数,UNIX域的套接字函数和以太网套接字(AF_INET)的函数相同,但是当用于UNIX域套接字时,套接字函数有一些差别和限制,主要有如下几条。使用函数bind()进行套接字和地址的绑定的时候,地址结构中的路径名和路径名所表示的文件的默认访问权限为0777,即用户、用户所属的组和其他组的用户都能读、写和执行。,11.1.3 使用UNIX域函数进行套接字编程,使用UNIX域函数进行套接字编程与AF_INET的方式一致,不同的地方在于地址结构不同。,11.1.4 传递文件描述符,Linux系统中提供了一种特殊的方法,可以从一个进程
5、中将一个已经打开的文件描述符传递给其他的任何进程。其基本过程如下:(1)创建一个字节流或者数据报的UNIX域套接字。(2)进程可以用任何返回描述符的UNIX函数打开一个描述符:(3)发送进程建立一个msghdr结构,其中包含要传递的描述符。(4)接收进程调用recvmsg()在UNIX域套接字上接收套接字。,11.1.5 socketpair()函数,函数socketpair()建立一对匿名的已经连接的套接字,其特性由协议族d、类型type、协议protocol决定,建立的两个套接字描述符会放在sv0和sv1中。函数socketpair()的原型如下,第一个参数d,表示协议族,只能为AF_LO
6、CAL或者AF_UNIX;第二个参数type,表示类型,只能为0。第三个参数protocol,表示协议,可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STREAM建立的套接字对是管道流,与一般的管道相区别的是,套接字对建立的通道是双向的,即每一端都可以进行读写。参数sv,用于保存建立的套接字对。#include#include int socketpair(int d,int type,int protocol,int sv2);,11.1.5 socketpair()函数,11.1.6 传递文件描述符的例子,本节中使用一个实例来介绍进程间传递文件描述符的例子。分为两个进程
7、,进程A中打开一个文件描述符,通过消息传送的方式将文件描述符传递给进程B。1进程A的代码2进程B的代码,11.2 广播,前面介绍的TCP/IP知识都是基于单播,即一对一的方式的,本节介绍一对多的广播方式。广播是由一个主机发向一个网络上所有主机的操作方式。例如在一个局域网内进行广播,同一子网内的所有主机都可以收到此广播发送的数据。,11.2.1 广播的IP地址,要使用广播,需要了解IPv4特定的广播地址。IP地址分为左边的网络ID部分以及右边的主机ID部分。广播地址所用的IP地址将表示主机ID的位全部设置为1。网卡正确配置以后,可以用下面的命令来显示所选用接口的广播地址:#ifconfig et
8、h0eth0 Link encap:Ethernet HWaddr 00:A0:4B:06:F4:8D inet UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1955 errors:0 dropped:0 overruns:0 frame:31 TX packets:1064 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:9 Baseaddress:0 xe400,11.2.2 广播与单播的比较
9、,广播和单播的处理过程是不同的,单播的数据只是收发数据的特定主机进行处理,而广播的数据整个局域网都进行处理。,11.2.2 广播与单播的比较,11.2.2 广播与单播的比较,11.2.3 广播的示例,本小节中的是一个服务器地址发现的代码,假设服务器为A,客户端为B。客户端在某个局域网启动的时候,不知道本局域网内是否有适合的服务器存在,它会使用广播在本局域网内发送特定协议的请求,如果有服务器响应了这种请求,则使用响应请求的IP地址进行连接,这是一种服务器/客户端自动发现的常用方法。1广播例子简介2广播的服务器端代码3广播的客户端代码,11.2.3 广播的示例,11.3 多播,单播用于两个主机之间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级套接字 高级 套接 PPT 课件

链接地址:https://www.31ppt.com/p-5623577.html