- 1、本文档共90页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* TCP/IP Socket网络编程 */83 recvfrom()函数参数说明 s标识一个套接口的描述字 buf接收数据的缓冲区 len接收数据缓冲区的长度 flags调用操作方式,同recv()中的flags from可选指针,指向装有源地址的缓冲区 fromlen可选指针,指向from缓冲区的长度值 函数说明:该函数的用法与有连接时recv()的用法一致,要注意的是该函数也可以用于有连接时数据的接收 * TCP/IP Socket网络编程 */83 在无连接套接口上发送数据-sendto() 对于无连接的套接口来说,要从套接口上发送一个数据报,就要使用sendto()函数 int sendto( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen ); * TCP/IP Socket网络编程 */83 sendto()函数参数说明 s本机的套接字 buf待发送数据的缓冲区 len指明buf缓冲区中要发送的数据长度 flags调用方式标志位,同send()中的flags to可选指针,指向接收数据的目的套接口地址 tolen是to所指的地址的长度 函数说明:该函数的使用方法类似send()函数,当用于无连接套接字接口,调用函数前要设置,指出目标IP地址和目标端口号。如果用于有连接的套接口时,则不能指定目标地址和目标端口,将to设置为空,地址长度设为0。当然在有连接的情况下很少使用该函数 * TCP/IP Socket网络编程 */83 关闭读写通道-shutdown()函数 在一个套接口上的读写操作完成后,应该首先使用shutdown()函数来关闭套接口的读通道、写通道或读写通道,这样做的好处是当双方不再有数据要发送或接收时,可以通知对方,以防止数据丢失,并能“优雅”地关闭连接。 int shutdown( SOCKET s, int how ); * TCP/IP Socket网络编程 */83 shutdown()函数参数说明 s标识一个套接口的描述字 how是一个标志,用于描述禁止哪些操作,取值如下表所示 关闭方式 参数值 说 明 SD_RECEIVE 0 表示不允许再调用接收函数,它关闭读通道。套接口接收缓冲区中的所有数据都被丢弃,并且有新数据到达套接口时,也被TCP协议层丢弃,但它对发送缓冲区没有影响,进程仍然可以在套接口上发送数据 SD_SEND 1 表示不允许再调用发送函数,它关闭写通道。在套接口发送缓冲区中的数据都被发送出去,得到接收端确认之后,就生成一个FIN包关闭连接。但它对接收缓冲区没有影响,进程仍然可以在套接口上接收数据 SD_BOTH 2 关闭读写通道,相当于执行了上面SD_RECEIVE和SD_SEND两个命令 * TCP/IP Socket网络编程 */83 关闭套接口-closesocket()函数 shutdown函数只关闭读写通道,并不关闭套接口,且套接口所占有的资源将被一直保留到closesocket()调用之前。 一个套接口不再使用时一定要关闭这个套接口,以释放与该套接口关联的所有资源,包括等候处理的数据。 int closesocket( SOCKET s ); 参数s表示即将被关闭的套接口 * TCP/IP Socket网络编程 */83 IP地址转换函数 char * inet_ntoa ( struct in_addr in ) in为传入参数,表示一个结构型的IP主机地址,该函数将一个32位数字表示的IP地址转换成点分十进制IP地址字符串 unsigned long inet_addr(const char FAR * cp) 该函数将一个点分十进制IP地址字符串转换成32位数字表示的IP地址。 两函数互为反函数 * TCP/IP Socket网络编程 */83 字节序转换函数 u_long htonl( u_long hostlong ) 4字节主机字节序表示的整数转换为4字节相应的网络字节序表示的整数 u_short htons( u_short hostshort ) 2字节主机字节序表示的整数转换为2字节相应的网络字节序表示的整数 u_long ntohl( u_long netlong ) 4字节网络字节序表示的整数转换为4字节相应的主机字节序表示的整数 u_short ntohs( u_short netshort ) 2字节网络字节序表示的整数转换为2字节相应的主机字节序表示的整数 * TCP/IP Socket网络编程 */8
文档评论(0)