跨多个操作系统的网络连接

时间:2012-09-30 00:54:23

标签: c++ networking operating-system

据我所知,Winsock用于Windows操作系统上的网络,而BSD用于Mac OS和Unix。是否有某种类型的“通用”插槽适用于所提到的三种操作系统中的任何一种?或者服务器是否必须以某种方式将两个套接字合并到其中以便与不同操作系统的客户端兼容?

4 个答案:

答案 0 :(得分:1)

套接字是套接字,它们只是抽取数据。因此,您可以在Windows上使用Java编程服务器,在BSD上使用C语言编写客户端,他们仍然可以相互通信。

如果不使用第三方库进行交叉编译,您可以使用一些#ifdef或多或少轻松地进行编译,请参阅更多@ http://tangentsoft.net/wskfaq/articles/bsd-compatibility.html

另一种方法是使用第三方库,这可能是最简单的方法,可以带来其他优势,比如更高级的功能等。 我想到了UDT,但还有其他的。 (http://udt.sourceforge.net/

答案 1 :(得分:1)

这里有一个小秘密:Winsock基于BSD套接字。除了初始化和关闭winsock库之外,BSD和Windows套接字之间的实际网络代码库是相同的。

答案 2 :(得分:1)

Winsock和BSD套接字是两个类似API的名称,它们都实现相同的功能:TCP / IP套接字,它们又是TCP连接或UDP数据报流的端点。由于实际传输由TCP / IP RFC定义,因此它们可以互操作。因此,没有必要在Unix上使用Winsock实现,或在Windows上使用BSD套接字实现。事实上后者是Winsock或多或少的,在这里和那里模糊了一些误解。

简而言之,你的问题确实没有意义。

答案 3 :(得分:0)

如果您避免使用某些更高级的功能,则Winsock与BSD兼容。诀窍是在处理非字节数据时尊重endianess。根据您的架构和语言,浮点可能会变得棘手。 Char数组将保持可预测的内容,但这可能是有限的。如果遵循协议,您只需要一台服务器。