在Windows上使用sys/socket.h函数

BSc*_*ker 28 c sockets windows

我正在尝试在Windows中使用socket.h函数.基本上,我目前正在查看https://beej.us/guide/bgnet/html/multi/clientserver.html#datagram上的示例代码.我知道socket.h是一个Unix函数 - 无论如何我在编译这个示例代码时可以轻松地模拟该环境吗?不同的IDE /编译器会改变什么吗?

否则,我想我需要利用虚拟化的Linux环境,这可能是最好的,因为代码最有可能在UNIX环境中运行.

谢谢.

leo*_*loy 39

您有两种选择:

  1. 使用Cygwin(Unix仿真库).
  2. 端口到Winsock(Windows标准库).

第一个选项允许你编译你的Unix源代码大部分都不受影响,但是你将它绑定到Cygwin仿真库(这意味着在运行时有两件事:一般性能 - 只有网络 - 可能不是最优的;并且运行环境必须具有Cygwin DLL可用).第二种方法需要你替换sys/socket.h (BSD套接字库,TCP/IP堆栈的UNIX标准)winsock2.h,并重写代码的某些部分 - 不多,但有些.

一些有价值信息的相关问题:

winsock和BSD套接字实现之间的差异

关于Cygwin的一些问题[Windows中的Linux](套接字,线程,其他编程和shell问题)

Winsock的例子?

  • 反过来有更多的惊喜:)虽然例如,Windows上的`select`忽略了第一个参数,所以很自然地,winsock程序员为`maxfd`设置了零.皇家痛苦:) (2认同)