我将要用C++开发一些与套接字相关的东西,并希望该软件从一开始就尽可能在Windows和Linux之间移植(使它在以后移植变得很棘手。)

我看过不同的库,alhem.net有一个C++库,当然还有boost::asio。 boost::asio看起来非常有前途,但是对于如此小的应用程序将有很大的依赖性。

自己写东西还是值得吗?还是应该只使用一个库?如果我自己做的话,主要的陷阱是什么?

最佳答案

Winsocks与Posix套接字不太兼容:

  • 在Winsocks中,套接字的类型为SOCKET。在Posix上,它只是一个文件描述符(int),您可以在其上执行常规的read()write()调用。
  • 它们不会以相同的方式返回错误。
  • 他们不支持recv()send()的某些选项。
  • 您必须使用两个特殊功能来初始化Winsocks库并将其统一化。
  • 我认为您无法使用shutdown()close()关闭Windows套接字。就像closesocket()一样。

  • 必须有更多的差异,但这就是我现在记得的。如果要使用Winsocks进行移植,则将有一个小的库,用于关闭套接字,打印错误消息等。

    我可能会亲自使用boost::asio(尽管我从未使用过)。

    关于c++ - Winsock 2的可移植性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/829625/

    10-11 22:57
    查看更多