我正试图将Linux应用程序移植到Windows。该应用程序不是太复杂,使用所有相当标准的代码,只需很少的外部依赖。主要依赖是libelf(在mingw下编译得很好),pthreads(似乎有一个win32版本可用)和套接字。主要问题是套接字... Windows提供了WinSock,但这与所有* nixes使用的BSD(Berkeley)套接字不是100%兼容的。我想知道的是,是否有人在暴露了BSD套接字API的窗口上编写了封装器,但在后端调用Winsock以便轻松移植?winsock的BSD套接字兼容包装?
0
A
回答
1
我会推荐使用cygwin.dll。它用于将* nixes引入到包括套接字,文件IO等窗口中。
1
大多数情况下,您只需确保在开始和结束时调用WSAStartup()和WSACleanup(),否则,基本的BSD套接字将非常好地转换。您可以创建一些静态全局变量,每次调用套接字调用时都会检查它们,并相应地调用WSAStartup()和WSACleanup()。至于poll()...以及它很容易转换为select()。
+0
感谢您的提示,我想他们有些帮助。但我更希望有人已经为我编写了代码,所以我不必实施所有这些小修补程序来实现它。 – davr
相关问题
- 1. winsock和BSD套接字实现之间的差异
- 2. Android BSD套接字连接
- 3. 找到兼容套接字
- 4. BSD套接字不工作
- 5. RL-ARM库的BSD套接字API
- 6. BSD Make和GNU Make兼容的makefile
- 7. POSIX套接字和BSD套接字有什么区别?
- 8. 用websocket包装套接字
- 9. Winsock/BSD套接字 - 接受具有与本地IP不同的目标IP的TCP连接
- 10. BSD套接字问题:inet_ntop返回“0.0.0.0”
- 11. BSD套接字和超时iOS中
- 12. BSD/Posix套接字是否可重入?
- 13. 安装Office2003兼容包?
- 14. 将本地winsock套接字传递给java套接字
- 15. 套接字程序Python vs C++(Winsock)
- 16. winsock客户端套接字无效
- 17. 套接字无法绑定(C与WinSock)
- 18. 在winsock中检索套接字协议
- 19. 将Winsock移植到Linux套接字
- 20. 在WinSock中处理异步套接字?
- 21. SO_LINGER和关闭套接字(WINSOCK)
- 22. WinSock:从套接字中删除数据
- 23. 带事件的套接字包装
- 24. Boost :: asio winsock和winsock 2兼容性问题
- 25. 与PDFlib API兼容的PHP包装器
- 26. 使用BSD套接字仿真一个活动的FTP连接
- 27. BSD套接字连接+选择(客户端)
- 28. 连接时BSD套接字无效参数
- 29. Android穿戴包装1兼容设备
- 30. 与BSD式套接字函数相比,使用Windows winsock API函数有什么好处吗?
我想避免cygwin如果可能的话,使用它有很多缺点。这个应用在mingw32中编译得很好,除了套接字,BSD套接字与winsock非常相似,所以我的想法是在它们之间转换的包装不会太复杂,并且这可能已经存在 – davr
是的,cygwin会带着一些“行李”。源代码确实实现了有问题的包装。虽然你会惊讶Winsock2.h与BSD有多接近(大多数情况下)。从摆脱编译器错误的角度来看,包装可能看起来没问题。但额外的层面可能不值得考虑港口是多么容易。我做了一个差不多十年的港口,从我记得以后几乎没有时间,大部分发现/替换所有进程。 MS有一个指导,你可能已经看到:http://msdn.microsoft.com/en-us/library/ms738562(VS.85).aspx – MandoMando