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

UNIX SOCKET编程简介【DOC精选】.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UNIX SOCKET编程简介 Posted on 2005-06-17 16:46 tarius.wus Blog 阅读(4171) 评论(2) ?编辑?收藏 引用 所属分类: UNIX 1 Layered Model of Networking Socket 编程的层次模型如下图所示, 最上面是应用层,应用层下面的是 SOCKET API 层,再下面是传输层和网络层…… 实际上, Sockets API 层并不是一个真正定义的网络层次,但却很好的描述了 Socket 编程所处的位置和所扮演的角色。 TCP 状态转换图 2 .什么是 SOCKET ? 简单的, Socket 可以被定义描述为两个应用通信通道的端点。一个 Socket 端点可以用 Socket 地址来描述, Socket 地址结构由 IP 地址,端口和使用协议组成( TCP or UDP )。 3 . Socket 地址结构 网络中以主机 IP 、端口以及使用的协议表明一个网络应用。 UNIX Socket 将它们组成一个结构,统称为 SOCKET 地址结构。 3.1? IPv4 对应的 SOCKET 地址结构 通常也称为“网际 SOCKET 地址结构”,以“ socketaddr_in ”命名,定义在头文件 netinet/in.h 中。 所涉及到的数据类型: 3.2? IPv6 对应的 SOCKET 地址结构 3.3 ? 通用地址结构 ? 当地址结构作为传递给任何一个 SOCKET 函数的参数时,任意一个 Socket 函数必须能处理每一种地址结构,为了解决这个问题,提出了使用通用套接口地址结构。当任何一个地址结构要作为指针参数传到套接口函数时,必须要显示转化为通用地址结构。 在 IPv4 应用中,使用的通用地址结构为 struct sockaddr, 定义在 sys/socket.h 中, 例如: 在 IPv6 中,提出了一种新的通用地址结构: struct sockaddr_storage 定义在netinet/in.h中。 struct sockaddr struct sockaddr_storage 的区别 !--[if !supportLists]--a.!--[endif]--struct sockaddr_storage能提供严格的结构对齐 !--[if !supportLists]--b.? !--[endif]--struct sockaddr_storage能容纳系统支持的更大的地址结构 3.4 ?Socket 4 . Client/Server Model Client/Server 的网络通信模型是使用最广最为基础的通信模型。在 Socket API 环境,其应用可以归纳为: TCP 链接建立 根据 TCP/IP 协议,函数 connect() 激发 TCP 的三路握手过程。 客户端给服务器一个 SYN(J) 信号,服务器返回一个 ACK(J+1); 然后服务器给客户端一个 SYN(K), 客户端也同样给服务器一个 ACK(K+1) ,这样就算 connect 成功。 注意:服务器返回的 SYN(K) 和 ACK(J+1) 是放在同一个分节中发给客户端的,因此链路在建立连接时只用了三个分节,故称为三路握手。 TCP 链接终止 TCP 用三个分节建立一个链接,而终止连接时需要四个分节。原因在于被动关闭链接一方需要关闭处理时间,因此 ACK 和 FIN 不能同时发给主动关闭一方。 主动关闭一方在收到 ACK 后,在等待被动关闭方发 FIN 消息这一状态称为处于 TIME_WAIT 状态。 5 Socket API 描述 5.1 创建套接字—— socket 函数 应用程序在使用套接字前,必须拥有一个套接字,系统调用 socket ()向应用程序提供 创建套接字的手段,其调用格式如下: 参数 family 指定通信发生的区域, UNIX 系统支持的地址族有: AF_UNIX,AF_INET,AF_NS 等,而 DOS 、 WINDOWS 中仅支持 AF_INET ,它是网际网区域。因此,地址族与协议族相同。 参数 type 描述要建立的套接字的类型。参数 protocol 说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则置为 0 ,使用默认的连接模式。根据这 3 个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号。因此, socket ()系统调用实际上指定了 协议 。 5.2 指定本地址—— bind 函数 一个套接字用 socket ()创建后,存在一个

您可能关注的文档

文档评论(0)

taotao0c + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档