BSD套接字兼容包装winsock?

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

Solutions Collecting From Web of "BSD套接字兼容包装winsock?"

我会建议使用cygwin.dll 。 它是为了将* nixes引入到包括套接字,文件IO等的窗口而构建的。

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