Linux下套接字编程.ppt

Linux下套接字编程.ppt

ID:52061603

大小:603.50 KB

页数:21页

时间:2020-03-31

Linux下套接字编程.ppt_第1页
Linux下套接字编程.ppt_第2页
Linux下套接字编程.ppt_第3页
Linux下套接字编程.ppt_第4页
Linux下套接字编程.ppt_第5页
资源描述:

《Linux下套接字编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux套接字编程套接字是一种进程间通信的方法,不同于以往介绍的进程间通信方法的是,它并不局限于同一台计算机的资源,除了可以在本地运行,还可以在网络中运行。套接字接口(socketinterface)由伯克利版本UNIX引入,可以认为是对管道概念的扩展——一台机器上的进程可以使用套接字与另一台机器上的进程通信。因此客户与服务器可以分散到网络中。同一台机器的进程间也可以用套接字通信。套接字概念微软的windows系统也通过可公开获取的windowssocket技术规范实现了套接字接口,因此windo

2、ws程序可以通过网络和Linux/UNIX计算机进行通信,实现客户/服务器系统,反之亦然。创建套接字#include#include返回套接字描述符intsocket(intdomain,inttype,intprotocol);domain:域type:指定套接字的通信类型protocol:指定使用的协议域(Domain)指定套接字通信中使用的网络介质,包括地址格式。最常用的有以下两种:AF_INET,即互联网络,基于IP协议,并且每个服务对应

3、一个端口号,套接字地址由IP地址+端口号决定;AF_UNIX,基于本地机器,底层协议使用文件输入/输出,地址为绝对路径的文件名。类型(Type)流套接字:由类型SOCK_STREAM指定,基于TCP/IP实现,提供一个有序、可靠、双向字节流的连接,发送的数据不会丢失、乱序、重复。大的消息会被分块、传输、重组,很像一个文件流。数据报套接字:由SOCK_DGRAM指定,基于UDP/IP协议,不建立和维持可靠连接,开销小。协议(protocol)我们重点讨论UNIX网络套接字和文件系统套接字,不需要选择特

4、定协议,只要默认值(0)即可。命名套接字#includeintbind(intsocket,conststructsockaddr*address,size_taddress_len);其中,socket是套接字的标示符。address是套接字地址。address_len是地址长度。套接字地址AF_UNIX:地址格式由sockaddr_un来描述structsockaddr_un{sa_family_tsun_familycharsun_path[];}AF_INET:地

5、址格式由sockaddr_in来指定structsockaddr_in{shortintsin_family;unsignedshortintsin_port;structin_addrsin_addr;}四字节IP地址创建套接字队列#includeIntlisten(intsocket,intbacklog);套接字队列中,等待处理的进入连接的个数最多不能超过backlog这个数字,多出的连接请求将被拒绝,导致客户连接失败。当服务器正忙于处理一个客户请求时,后续的客户连

6、接放入队列等待处理。函数执行成功返回0,失败返回-1.接受连接#includeintaccept(intsocket,structsockaddr*address,size_t*address_len);连接客户的地址将被放入address参数指向的sockaddr结构中。address_len指定客户结构的长度,如果客户地址的长度超出这个值将被截断,所以必须先得到这个合适的值。请求连接#includeintconnect(intsocket,

7、structsockaddr*address,size_taddress_len);参数socket指定的套接字将连接到参数address指定的服务器套接字,address指向的结构长度由参数address_len指定。关闭套接字可以通过close函数终止服务器和客户上的套接字连接,操作过程与对文件描述符进行关闭一样。Server.c头文件与变量声明#include#include#include#include

8、h>#include#includeintmain(){intserver_sockfd,client_sockfd;intserver_len,client_len;structsockaddr_unserveraddress;structsockaddr_unclientaddress;Server.c删除以前的套接字,为服务器创建一个未命名的套接字unlink(“server_socket”);server_sockfd=

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

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

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