【发布时间】:2017-11-10 13:51:39
【问题描述】:
我正在寻找一个用于 windows、c 或 c++ 的 TCP 套接字编程的最简单(和最快)示例,无论哪个可以更快地完成它,发送琐碎的数据,例如 1 个字节或几个字节,但在一个数据包中.这是出于研究目的。我在谷歌上搜索并找到了几个示例,但是每个示例看起来都有些不同,有些是 C 语言,有些是 C++,有些使用 ZeroMemory(来自 Windows),有些使用 memset,其中一些以不同的方式分配数据,所以虽然我可以在 c/c++ 中找到 winsock 的示例,而且我不是套接字编程方面的专家 - 我不确定什么是绝对简约的 c/c++ 代码才能以最快的方式完成它。
我知道 UDP 会快得多,但它需要同时可靠,因此我正在寻找 TCP。
我想我可以尝试它们中的每一个并尝试为它们计时,但想知道这里的某些套接字/winsock 专家是否会有一个超级简单的 C/C++ 服务器/客户端,最后带有一些计时功能(高分辨率) . 我说超级简单,因为我试图确定在我的机器上套接字传输的速度(和最快的方式),当然它可以包括关闭 Nagle 的算法,这是我无论如何都想做的。我不确定人们还使用了哪些其他技巧。
谢谢。
【问题讨论】:
-
您具体做了哪些研究?指出您打算使用的代码并返回您的结论将是有益的......您在谷歌中找到的每一个样本,确定一个使用 zeromemory,另一个使用 memset,最后当天,您看到的代码基本上使用套接字....
-
附注:使用 TCP 发送小数据包将是多余的。尽量缓冲它们,否则你会浪费很多时间来处理数据包头..
-
@tommieb75 - 到目前为止,没有太多的研究,正如开头所说,是的,它们都使用套接字,但差异可能是微秒,这对我来说很多。无论如何,谢谢你的评论。
-
还有可靠且快速的 RUDP,因为它省略了连接设置:en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol
标签: c++ windows performance sockets winsock