winock周围的BSD套接字兼容包装?

时间:2009-12-21 02:51:07

标签: windows linux sockets network-programming winsock

我正在尝试将Linux应用程序移植到Windows。应用程序不是太复杂,使用所有相当标准的代码,几乎没有外部依赖。主要依赖项是libelf(在mingw下编译得很好),pthreads(似乎有win32版本可用)和套接字。主要问题是套接字... Windows提供WinSock,但这并不是所有* nixes使用的BSD(Berkeley)套接字100%兼容。我想知道的是,是否有人在Windows上编写了一个暴露BSD套接字API的包装器,但在后端调用Winsock以简化移植?

2 个答案:

答案 0 :(得分:1)

我建议使用cygwin.dll。它专为将* nixes引入Windows包括套接字,文件IO等而构建。

答案 1 :(得分:1)

在大多数情况下,您只需要确保在开始和结束时调用WSAStartup()和WSACleanup(),否则,基本的BSD套接字将很好地转换。您可以创建一些静态全局变量,检查每次调用套接字调用,并相应地调用WSAStartup()和WSACleanup()。至于poll()......好吧,它很容易翻译成select()。