Windows最低级别的套接字编程?

时间:2011-10-25 19:48:14

标签: c++ windows pinvoke winsock sockets

我对低级别的winsock有多么困惑?我想在Windows上编写一个非常基本的客户端 - 服务器程序。我真的不想使用臃肿的TCP甚至UDP,只是非常基本和低延迟的东西。 winsock是否适合这个?或者winock与windows网络功能相同,只是所有打包(可能更慢)?在本机Windows网络功能上使用PInvoke会更好吗?

2 个答案:

答案 0 :(得分:3)

Winsock,TCP,UDP以及建立在这些基础之上的任何受欢迎的网络库都将具有可比性。

使用最简单的方法来完成工作。

答案 1 :(得分:2)

首先,可以编写全新的协议,而无需实现网络驱动程序。为此你有raw sockets。在桌面Windows上,它们是very limited(查找"限制")。

这是可能的,但不推荐。不要重新发明轮子并在UDP和TCP之间进行选择,直到你完全确定需要更复杂的东西(但不是更简单)。

要通过网络发送数据(与两台计算机之间的直接电缆链接相反),您需要IP协议。要将数据分派到正确的应用程序,您需要传输协议(UDP,TCP和其他)。 UDP几乎是最简单的一个,因为它是它的主要设计目标。 UDP提供额外的寻址(除IP地址之外的端口号以将数据传送到正确的套接字),数据包边界("长度"字段)和可选的校验和。这就是全部,这是最小的功能列表。接下来,通过UDP实现您需要的一切。

接下来,如果您需要确保您的数据包已经发送而不是默默地丢弃在某个地方(可靠性),以正确的顺序发送,如果您想知道某人仍然在对面听取您的意见结束(连接)和其他由最佳专家实施的东西,硬件适应这种实现,几十年来由数百万人测试,有大量文档,几乎在所有可能的平台上都可用 - 使用TCP。