我即将在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一起去个人(我从来没有使用它).