`
ah_fu
  • 浏览: 223225 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

权威老了?《UNIX网络编程》一书中过时的地方

阅读更多
    最近打算简单封装一下Linux下的socket函数,使之成为一个好用的类,参考书的蓝本选用了经典的《UNIX网络编程》。

    在书中,作者提到,使用send()函数发送数据的时候,如果协议栈的发送缓冲区满了,send()函数将返回-1,并且errno为EINTR,这个时候应该重新调用send()继续发送。为了避免频繁地处理这种错误,作者自己写了个sendn函数代替send。
    而查查man send和MSDN,里面明确讲了,对于阻塞套接字,当系统缓冲区满的时候,send()函数会一直阻塞,直到系统缓冲区可用。

    从作者写这本书开始,到今天socket编程接口的改变,其中的差异已经非常非常大了。虽然书中的很多思想仍然可用,但是其中过时的描述无疑会将初学者引入歧途。

    个人建议大家不要再将这本书作为SOCKET编程的入门教材,通过直接查询man来一边编码一边领悟或许会是更好的方式。
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics