网站大量收购闲置独家精品文档,联系QQ:2885784924

Linux下套接字编程.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux套接字编程 套接字是一种进程间通信的方法,不同于以往介绍的进程间通信方法的是,它并不局限于同一台计算机的资源,除了可以在本地运行,还可以在网络中运行。 套接字接口(socket interface)由伯克利版本UNIX引入,可以认为是对管道概念的扩展——一台机器上的进程可以使用套接字与另一台机器上的进程通信。因此客户与服务器可以分散到网络中。 同一台机器的进程间也可以用套接字通信。 套接字概念 微软的windows系统也通过可公开获取的windows socket技术规范实现了套接字接口,因此windows程序可以通过网络和Linux/UNIX计算机进行通信,实现客户/服务器系统,反之亦然。 创建套接字 #include sys/types.h #includesys/socket.h 返回套接字描述符 int socket( int domain, int type, int protocol); domain:域 type:指定套接字的通信类型 protocol:指定使用的协议 域(Domain) 指定套接字通信中使用的网络介质,包括地址格式。最常用的有以下两种: AF_INET,即互联网络,基于IP协议,并且每个服务对应一个端口号,套接字地址由IP地址+端口号决定; AF_UNIX,基于本地机器,底层协议使用文件输入/输出,地址为绝对路径的文件名。 类型(Type) 流套接字:由类型SOCK_STREAM指定,基于TCP/IP实现,提供一个有序、可靠、双向字节流的连接,发送的数据不会丢失、乱序、重复。大的消息会被分块、传输、重组,很像一个文件流。 数据报套接字:由SOCK_DGRAM指定,基于UDP/IP协议,不建立和维持可靠连接,开销小。 协议(protocol) 我们重点讨论UNIX网络套接字和文件系统套接字,不需要选择特定协议,只要默认值(0)即可。 命名套接字 #include sys/socket.h int bind( int socket, const struct sockaddr* address, size_t address_len); 其中,socket是套接字的标示符。address是套接字地址。address_len是地址长度。 套接字地址 AF_UNIX:地址格式由sockaddr_un来描述 struct sockaddr_un{ sa_family_t sun_family char sun_path[]; } AF_INET:地址格式由sockaddr_in来指定 struct sockaddr_in{ short int sin_family; unsigned short intsin_port; structin_addrsin_addr; } 四字节IP地址 创建套接字队列 #include sys/socket.h Int listen( int socket, int backlog); 套接字队列中,等待处理的进入连接的个数最多不能超过backlog这个数字,多出的连接请求将被拒绝,导致客户连接失败。 当服务器正忙于处理一个客户请求时,后续的客户连接放入队列等待处理。函数执行成功返回0,失败返回-1. 接受连接 #include sys/socket.h int accept( int socket, struct sockaddr* address, size_t* address_len); 连接客户的地址将被放入address参数指向的sockaddr结构中。 address_len指定客户结构的长度,如果客户地址的长度超出这个值将被截断,所以必须先得到这个合适的值。 请求连接 #includesys/socket.h int connect( int socket, struct sockaddr* address, size_t address_len); 参数socket指定的套接字将连接到参数address指定的服务器套接字,address指向的结构长度由参数address_len指定。 关闭套接字 可以通过close函数终止服务器和客户上的套接字连接,操作过程与对文件描述符进行关闭一样。 Server.c 头文件与变量声明 #includesys/types.h #includesys/socket.h #includestdio.h #includesys/un.h #includeunistd.h #incl

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档