2013年9月21日

摘要: 通过两种方式可以关闭一个socket:close和shutdown。直接调用close关闭socket存在以下两个问题:1. close只是将socket 描述字的访问计数减1,仅当描述字的访问计数为0时,才真正的关闭socket。2.close终止了数据传输的两个方向:读与写。tcp管道是全双工的,有时候我们仅仅是想通知另一端我们已经完成了数据的发送,但还想继续接收另一端发送过来的数据,在这种情况下调用close关闭socket是不合适的。 shutdown可以解决上面关于close的两个问题,shutdown系统调用如下:#include /* 以how指定的方式关闭socket *... 阅读全文
posted @ 2013-09-21 20:45 黑猫警长V5 阅读(555) 评论(0) 推荐(0) 编辑
摘要: I/O复用:当一个或多个I/O条件满足时,我们就被通知到,这种能力被称为I/O复用。1.I/O复用的相关系统调用 posix的实现提供了select、poll、epoll两类系统调用以及相关的函数来实现I/O复用。select以及相关联的函数如下所示:#include /* 功能:监听多个fd,等待指定的fd指定的事件发生或者超时。 * nfds: 最大描述符加1。 * readfds:监听读fd集合。 * writefds:监听写fd集合。 * exceptfds:监听出错fd集合。 * timeout:超时时间,null-select一直阻塞直到指定时间发生,0-select不阻塞立... 阅读全文
posted @ 2013-09-21 18:05 黑猫警长V5 阅读(407) 评论(0) 推荐(0) 编辑

导航