【发布时间】:2011-06-09 02:52:16
【问题描述】:
我听说过这些 TCP/IP 书籍,它们似乎主要关注 UNIX 中的 TCP/IP
TCP-Illustrated-Vol.1
TCP-Illustrated-Vol.2
除了这些书中介绍的代码外,TCP/IP从windows实现有什么不同吗?
如果可以,能否推荐一些其他windows平台的TCP/IP书籍?
【问题讨论】:
我听说过这些 TCP/IP 书籍,它们似乎主要关注 UNIX 中的 TCP/IP
TCP-Illustrated-Vol.1
TCP-Illustrated-Vol.2
除了这些书中介绍的代码外,TCP/IP从windows实现有什么不同吗?
如果可以,能否推荐一些其他windows平台的TCP/IP书籍?
【问题讨论】:
Network Programming for Microsoft Windows 是这本书。它已经很老了,但这并不重要。这不是一个简单的主题,这本书可能有点密集,也不是一本手握“傻瓜”的书,但我还没有找到关于这个主题的更好的书。
当然,您可能还希望将链接到的两本 Stevens 的书放在手边,因为它们非常适合独立于平台的东西。
至于差异,Windows 或多或少地实现了 BSD 套接字 API,但也提供了通常更适合 Windows 平台的替代 API。如果您正在寻找可扩展性和服务器端编码,那么像重叠 I/O 和 IO 完成端口之类的东西是在 Windows 上采用的更明智的途径。 BSD API 可能适用于简单的服务器和单线程客户端。如果您需要一些基于 IO 完成端口的设计示例代码,那么我有一些 here。
【讨论】:
我 asked this question 早在 2009 年。实际的 TCP/IP 协议就是这样 - 一个协议。在底层,Unix 和 Windows 以相同的方式实现 TCP/IP。否则他们怎么能互相交谈?
正如 Len 所说,不同之处在于 API。 Windows 实现了 BSD API,因此您可以进行基本的可移植套接字编程,但是如果您想要更高性能的东西,您必须深入研究平台细节,或者使用第三方库。我想既然你问这个问题,你想自己学习这些东西。
我实现了一个基于 IO 完成端口的系统,虽然我无法分享确切的代码,但我可以向您指出我从中学到的一些资源,例如 this codeproject page、this MSDN article、and this one。
【讨论】: