Socket函数说明教案.docx

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 Socket函数说明6.1 库函数综述6.1.1 套接字函数表6.1 Windows Sockets 1.1版本的Berkeley Sockets函数accept() *确认外来连接,并将它与一个立即建立的数据套接字联系起来。原始套接字返回到监听状态。bind()给未命名套接字赋一个本地名。closesocket() *从进程对象参考表中删去一个套接字,只有当SO_LINGER设置时才阻塞。connect() *在指定套接字上初始化连接。getpeername()获取与指定套接字连接的对等方的名字。getsockname()获取指定套接字的当前名字。getsockopt()获取与指定套接字相关的选项。htonl()将一个32位数从主机字节顺序转换为网络字节顺序。htons()将一个16位数从主机字节顺序转换为网络字节顺序。inet_addr()将一个用网际标准点分表示法表示的字符串地址转换成网际地址值。inet_ntoa()将一个网际地址值转换成一个用点分十进制表示法表示的字符串地址ioctlsocket()为套接字提供控制。listen()在指定套接字上监听外来连接。ntohl()将一个32位数从网络字节顺序转换为主机字节顺序。ntohs()将一个16位数从网络字节顺序转换为主机字节顺序。recv() *从一个连接的套接字上接收数据。recvfrom() *从一个连接或未连接的套接字上接收数据。select() *执行多路同步I/O。send() *给一个连接套接字发送数据。sendto() *给一个连接或未连接套接字发送数据。setsockopt()设置与指定套接字相关的选项。shutdown()关闭全双工连接的一部分。socket()建立一个通讯用的末端点,返回一个套接字。 * = 如果作用于阻塞套接字上,此例程可用阻塞。这些函数根据功能的不同可以分为如下几类: (1) 套接字函数。此类函数包括sockets(),bind(),getpeername(),getsockname()和closesocket(),它们主要完成创建,关闭套接字功能,以及对套接字命名与名字获取。 (2) 网络连接函数。此类函数包括listen(),accept(),connect()和shutdown(),它们完成网络连接(如虚电路)的建立与关闭。此类函数中有部分可阻塞。 (3) 数据传输函数。此类函数包括send(),recv(),sendto()和recvfrom(),它们完成网络数据的发送与接收,全部是可以阻塞的函数。 (4) 字节定序函数。此类函数包括htonl(),htons(),ntohl()和ntohs(),它们完成主机和网络之间数据字节顺序的转换。 (5) 地址转换函数。此类函数包括inet_addr(),inet_ntoa(),它们完成网络字符串地址和Internet地址之间的转换。 (6) 套接字控制函数。此类函数包括getsockopt(),setsockopt(),ioctlsocket()和select(),它们设置/获取套接字的选项,控制/检测套接字的工作状态。其中select()函数在必要时可能阻塞。只使用了上述函数的Berkeley Sockets源程序基本上可以不加修改地移植到Windows Sockets环境中来。但是,移植过来的程序有一个最大的问题是“阻塞”。在Berkeley Sockets中,套接字默认的工作模式是操作处于阻塞方式,一个阻塞操作可能阻塞整个Windows环境。在非抢先Windows环境,强烈推荐程序员使用非阻塞(异步)操作,也就是说,推荐使用Windows Sockets提供的异步选择函数代替可能阻塞的select()函数,并且用网络事件消息来驱动可能阻塞的网络连接函数(accept()和connect())和数据传输函数,这样设计的程序能更好地工作。5.1.2 数据库函数 Windows Sockets定义了如表6.2所示的“数据库”函数:表6.2 Windows Sockets 1.1版本定义的“数据库”函数gethostbyaddr() *通过网络地址获取主机名字和地址等信息。gethostbyname() *通过主机名字获取主机名字和地址等信息。gethostname()获取本地主机名。getprotobyname() *通过协议名获取协议名和协议号等信息。getprotobynumber() *通过协议号获取协议名和协议号等信息。getservbyname() *通过服务名获取服务的名字和端口等信息。getservbyport() *通过端口获取服务的名字和端口等

文档评论(0)

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

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

1亿VIP精品文档

相关文档