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

几个socket函数的详细解释(Several socket functions are explained in detail).doc

几个socket函数的详细解释(Several socket functions are explained in detail).doc

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

几个socket函数的详细解释(Several socket functions are explained in detail) 1。closesocket函数 closesocket(int 插座的 ); closesocket函数用来关闭一个描述符为的套接字。由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。套接字数据结构中专门有一个字段存放该结构的被引用次数,即有多少个套接字描述符指向该结构。当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描述符指向它,因此操作系统就先把的在套接字描述符表中对应的那条表项清除,并且释放的对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除的在套接字描述符表中的对应表项,并且把的对应的套接字数据结构的引用次数减1。 closesocket函数如果执行成功就返回0,否则返回socket_error。 2。把函数 发送(int 插座的, const char * buf远, len, int的旗帜 ); 不论是客户还是服务器应用程序都用送函数来向TCP连接的另一端发送数据。客户程序一般用送函数向服务器发送请求,而服务器则通常用送函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步插座的送函数的执行流程。当调用该函数时,送先比较待发送数据的长度Len和套接字的的发送缓冲区的长度,如果Len大于的的发送缓冲区的长度,该函数返回socket_error;如果Len小于或者等于的的发送缓冲区的长度,那么送先检查协议是否正在发送的的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送的的发送缓冲中的数据或者的的发送缓冲中没有数据,那么送就比较的的发送缓冲区的剩余空间和Len,如果Len大于剩余空间大小送就一直等待协议把的的发送缓冲中的数据发送完,如果Len小于剩余空间大小送就仅仅把buf中的数据复制到剩余空间里(注意并不是送把的的发送缓冲中的数据传到连接的另一端的,而是协议传的,送仅仅是把buf中的数据复制到的的发送缓冲区的剩余空间里)。如果送函数复制数据成功,就返回实际复制的字节数,如果送在复制数据时出现错误,那么送就返回socket_error;如果送在等待协议传送数据时网络断开的话,那么送函数也返回socket_error。要注意送函数把buf中的数据成功复制到的的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个插座函数就会返回socket_error。(每一个除送外的插座函数在执行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在等待时出现网络错误,那么该插座函数就返回socket_error) 注意:在UNIX系统下,如果送在等待协议传送数据时网络断开的话, The process that calls send will receive a SIGPIPE signal, and the default process for the process is termination of the process. 3.recv function Int recv (... SOCKET s, Char FAR *buf, Int len, Int flags ); Either the client or the server, the application uses the recv function to receive data from the other end of the TCP connection. The first parameter of the function specifies the receiver socket descriptor; second parameter specifies a buffer, the buffer is used to store the recv function to receive the data; the third parameter specifies the length of the buf; fourth parameters generally set to 0. Here is the execution flow of the recv function

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档