使用 Asio 库还需要使用 socket() 系列函数么


#1

第一次在这里发帖,可能我的这个问题有点小白,不过还是希望大家的解答。

最近一段时间,买了本 UNP 在看,也是刚刚开始看的,只是实现了个获取时间的客户端而已(没错,就是书里的第一个程序)。在这个程序里,很多地方全是 socket 系列的函数。

我深信,C++ 与 C 完全不是一种语言,C++ 也不是 C 的超集,尽管 C 的很多地方在 C++ 里也有。当我在网上翻来覆去看 C++ socket 编程,发现很多地方都在调用 *.h 的头文件来实现网络编程,甚至可以说,他们的程序里把 iostream 换成 stdio.h,再改动一些诸如 cout,cin 之类的函数,完全就是 C 语言了。我就觉得这不是纯正的 C++ 代码。

后来了解到了 boost::asio,也看到了这个网站,就进来问下:

  • https://mmoaay.gitbooks.io/boost-asio-cpp-network-programming-chinese/content/Chapter1.html 从这个页面中的客户端例子可以看到,直接用了 asio 库的 ip::tcp::endpoint 完成了定义远端服务器的 IP 地址和端口,看起来功能非常强大,是不是意味着,用了 asio 以后,直接就不需要使用 socket 函数了?

  • 如果确实不需要 socket 了,那么,UNP 应该还是要继续看吧?因为我看 UNP 里的更多的是原理性的东西,讲了 API 啥的,这在 Asio 里应该是通用的吧?

最后,再次谢谢你的阅读,并且希望得到大牛的解答~


#2

UNP 还是需要看的。asio 是方便的封装,但是不意味着你不需要了解 UNP 了。


#3

基本不需要使用, 但是了解能明白原理. 对发展和改良有帮助