Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Windows最低级别套接字编程?_C++_Windows_Pinvoke_Winsock_Sockets - Fatal编程技术网

C++ Windows最低级别套接字编程?

C++ Windows最低级别套接字编程?,c++,windows,pinvoke,winsock,sockets,C++,Windows,Pinvoke,Winsock,Sockets,我对winsock到底有多低级有点困惑?我想在windows上编写一个非常基本的客户机-服务器程序。我真的不希望使用臃肿的TCP甚至UDP,只是一些非常基本和低延迟的东西。winsock会是这方面的理想选择吗?或者winsock与windows网络功能相同,只是全部打包(可能更慢)?在本机windows网络功能上使用PInvoke会更好吗 Winsock、TCP、UDP以及任何在这些基础上构建的广受欢迎的网络库在性能方面都将具有可比性 使用哪一个最容易完成工作。Winsock、TCP、UDP以及

我对winsock到底有多低级有点困惑?我想在windows上编写一个非常基本的客户机-服务器程序。我真的不希望使用臃肿的TCP甚至UDP,只是一些非常基本和低延迟的东西。winsock会是这方面的理想选择吗?或者winsock与windows网络功能相同,只是全部打包(可能更慢)?在本机windows网络功能上使用PInvoke会更好吗

Winsock、TCP、UDP以及任何在这些基础上构建的广受欢迎的网络库在性能方面都将具有可比性


使用哪一个最容易完成工作。

Winsock、TCP、UDP以及任何在这些基础上构建的广受欢迎的网络库在性能方面都将具有可比性


使用最容易完成工作的协议。

首先,可以编写全新的协议,而不需要实现网络驱动程序。这是你所拥有的。在桌面窗口中,它们是(查找“限制”)

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

要通过网络发送数据(与两台计算机之间的直接电缆连接相反),您需要IP协议。要将数据发送到正确的应用程序,您需要传输协议(UDP、TCP和其他协议)。几乎是最简单的,因为这是它的主要设计目标。UDP提供额外的寻址(除了IP地址之外的端口号,用于将数据传送到右侧套接字)、数据包边界(“长度”字段)和可选校验和。仅此而已,这是最小的功能列表。接受它并通过UDP实现您需要的一切


接下来,如果您需要确保您的数据包是以正确的顺序发送的,而不是在途中的某个地方无声地丢弃(可靠性),如果您想知道有人仍然在另一端(连接)和其他由最好的专家实施的事情上听您讲话,并且硬件适合此实施,几十年来,数百万人进行了测试,有大量的文档,几乎可以在所有可能的平台上使用-使用TCP。

首先,可以编写全新的协议,而不需要实现网络驱动程序。这是你所拥有的。在桌面窗口中,它们是(查找“限制”)

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

要通过网络发送数据(与两台计算机之间的直接电缆连接相反),您需要IP协议。要将数据发送到正确的应用程序,您需要传输协议(UDP、TCP和其他协议)。几乎是最简单的,因为这是它的主要设计目标。UDP提供额外的寻址(除了IP地址之外的端口号,用于将数据传送到右侧套接字)、数据包边界(“长度”字段)和可选校验和。仅此而已,这是最小的功能列表。接受它并通过UDP实现您需要的一切


接下来,如果您需要确保您的数据包是以正确的顺序发送的,而不是在途中的某个地方无声地丢弃(可靠性),如果您想知道有人仍然在另一端(连接)和其他由最好的专家实施的事情上听您讲话,并且硬件适合此实施,几十年来,数百万人进行了测试,拥有大量文档,几乎可以在所有可能的平台上使用—使用TCP。

TCP和UDP“臃肿”了吗?你疯了吗?接下来你会说IP级别太高。Winsock的级别相当低。我不会这么快就注销UDP。如果你想要一个轻量级/敏捷的协议,UDP就是你的人(肯定比TCP轻量级)。替代方案是什么?你打算在通用IP上编写自己的协议吗?@Matt,“臃肿”是在TCP上的-TCP比较慢,因为你有冗余、检查、三方握手等。我相信Winsock函数只允许你通过UDP/TCP进行通信。如果您想编写自己的网络设备驱动程序,可以使用较低的级别。然而,我认为这是你想要去的相反方向…如果这是你的目标,使用UDP。我喜欢UDP的一点是它是“无连接的”。您可以开始发送数据。另一个系统可以开始监听。它应该完成你所追求的。在你完全理解其含义之前,不要深入到较低的层次。TCP和UDP工作得很好。TCP和UDP“膨胀”了吗?你疯了吗?接下来你会说IP级别太高。Winsock的级别相当低。我不会这么快就注销UDP。如果你想要一个轻量级/敏捷的协议,UDP就是你的人(肯定比TCP轻量级)。替代方案是什么?你打算在通用IP上编写自己的协议吗?@Matt,“臃肿”是在TCP上的-TCP比较慢,因为你有冗余、检查、三方握手等。我相信Winsock函数只允许你通过UDP/TCP进行通信。如果您想编写自己的网络设备驱动程序,可以使用较低的级别。然而,我认为这是你想要去的相反方向…如果这是你的目标,使用UDP。我喜欢UDP的一点是它是“无连接的”。您可以开始发送数据。另一个系统可以开始监听。它应该完成你所追求的。在你完全理解其含义之前,不要深入到较低的层次。TCP和UDP工作得很好。