`
luliangok
  • 浏览: 817023 次
文章分类
社区版块
存档分类
最新评论

Beej’s Guide Network to Programming 系列连载16

 
阅读更多

5.9. close()和shutdown() ---别让我再见到你的脸!

你已经整天都在发送(send()) 和接收 (recv()) 数据了,现在你准备关闭你的套接字描述符了。这很简单,你可以使用一般的 Unix 文件描述符的 close() 函数:

int close(sockfd);

它将防止套接字上更多的数据的读写。任何在另一端读写套接字的企 图都将返回错误信息。

如果你想在如何关闭套接字上有多一点的控制,你可以使用函数 shutdown()。它允许你将一定方向上的通讯或者双向的通讯(就象close()一样)关闭,你可以使用:

int shutdown(intsockfd, int how);

sockfd 是你想要关闭的套接字文件描述复。how 的值是下面的其中之 一:

  0 – 不允许接受

  1 – 不允许发送

  2 – 不允许发送和接受(和 close() 一样)

shutdown() 成功时返回 0,失败时返回 -1(同时设置 errno。) 如果在无连接的数据报套接字中使用shutdown(),那么只不过是让send() 和 recv() 不能使用(记住你在数据报套接字中使用了 connect 后是可以使用它们的)。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics