Linux下Socket编程详解.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下Socket编程详解

Linux下 Socket编程 网络的 Socket 数据传输是一种特殊的 I/O,Socket 也是一种文件描述符。Socket 也 具有一个类似于打开文件的函数调用 Socket(),该函数返回一个整型的 Socket 描述符,随 后的连接建立、数据传输等操作都是通过该 Socket 实现的。 什么是 Socket Socket 接口是 TCP/IP 网络的 API,Socket 接口定义了许多函数或例程,程序员可以 用它们来开发 TCP/IP 网络上的应用程序。要学 Internet 上的 TCP/IP 网络编程,必须理解 Socket 接口。 Socket 接口设计者最先是将接口放在 Unix 操作系统里面的。如果了解 Unix 系统的 输入和输出的话,就很容易了解 Socket 了。网络的 Socket 数据传输是一种特殊的 I/O, Socket 也是一种文件描述符。Socket 也具有一个类似于打开文件的函数调用 Socket(),该 函数返 回一个整型的 Socket 描述符,随后的连接建立、数据传输等操作都是通过该 Socket 实现的。常用的 Socket 类型有两种:流式 Socket (SOCK_STREAM)和数据报式 Socket (SOCK_DGRAM)。流式是一种面向连接的 Socket,针对于面向连接的 TCP 服务应用; 数据 报式 Socket 是一种无连接的 Socket,对应于无连接的 UDP 服务应用。 Socket建立 为了建立 Socket,程序可以调用 Socket 函数,该函数返回一个类似于文件描述符的 句柄。socket 函数原型为: int socket(int domain, int type, int protocol); domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族); type 参数指定 socket 的类型: SOCK_STREAM 或 SOCK_DGRAM,Socket 接口还定义 了原始 Socket(SOCK_RAW),允许程序使用低层协议;protocol 通常赋值0。 Socket() 调用返回一个整型 socket 描述符,你可以在后面的调用使用它。 Socket 描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用 Socket 函数时,socket 执行体将建立一个 Socket,实际上建立一个 Socket意味着为一个 Socket 数据结构分配存储空间。Socket 执行体为你管理描述符表。 两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机 端口、远端主机地址和远端协议端口。Socket 数据结构中包含这五种信息。 Socket配置 通过 socket 调用返回一个 socket 描述符后,在使用 socket 进行网络传输以前,必须 配置该 socket。面向连接的 socket 客户端通过 调用 Connect 函数在 socket 数据结构中保 存本地和远端信息。无连接 socket 的客户端和服务端以及面向连接 socket 的服务端通过调 用 bind 函数来配置本地信息。 Bind 函数将 socket 与本机上的一个端口相关联,随后你就可以在该端口监听服务请求。Bind 函数原型为: int bind(int sockfd,struct sockaddr *my_addr, int addrlen); Sockfd 是调用 socket 函数返回的 socket 描述符,my_addr 是一个指向包含有本机 IP 地址及端口号等信息的 sockaddr类型的指针;addrlen常被设置为sizeof(struct sockaddr)。 struct sockaddr 结构类型是用来保存 socket 信息的: struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char sa_data[14]; /* 14 字节的协议地址 */ }; sa_family 一般为 AF_INET,代表 Internet(TCP/IP)地址族;sa_data 则包含该 socket 的 IP 地址和端口号。 另外还有一种结构类型: struct sockaddr_in { short int sin_family; /* 地址族 */ unsigned short int sin_port; /* 端口号 */

文档评论(0)

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

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

1亿VIP精品文档

相关文档