繁体   English   中英

寻找一个最简单(和最快)的Windows,c或c ++的TCP套接字编程示例

[英]Looking for a simplest (and fastest) example of TCP socket programming for windows, c or c++

我正在寻找一个最简单(也是最快)的Windows,c或c ++的TCP套接字编程示例,无论哪个都可以更快地完成,发送trival数据,例如1个字节,或者几个字节,但是在一个数据包中。 这是出于研究目的。 我用google搜索并找到了几个例子,但是每一个都看起来有点不同,有些是C语言,有些是C ++,有些是使用ZeroMemory(来自windows),有些使用memset,有些使用不同的方式分配数据,所以虽然我可以在c / c ++中找到winsock的例子,虽然我不是套接字编程的专家 - 我不确定什么是绝对简约的c / c ++代码,以尽可能快的方式完成它。

我知道UDP会更快,但它需要同时可靠,因此我正在寻找TCP。

我想我可以尝试他们每个人并尝试计时,但是想知道这里的一些socket / winsock专家是否会在C / C ++中有一个超级简单的服务器/客户端,最后有一些定时功能(高分辨率)。 我说超级简单,因为我试图确定套接字在我的机器上传输的速度有多快(也是最快的方式),当然它可以包括关闭Nagle的算法,这也是我想做的事情。 我不确定人们使用的其他技巧。

谢谢。

试试Len Holgate的套接字服务器框架 我相信他已将其商品化为打包版本,但这应该是一个很好的起点。 有一个客户端实现教程。 这不是最简单的代码,但如果您对最大化性能感兴趣,简单的代码可能无法满足您的需求。

您将不得不添加自己的计时支持,但对于任何可能的现成包都可能是这样。

Boost Asio可能是你最好的选择。 这是一个非常好的图书馆,有时间支持和你应该去的一切。

编辑:我知道这不是一个预先构建的客户端/服务器,这正是您正在寻找的,但Asio使您可以非常轻松地从几行代码中获得您想要的内容。

我所知道的最简单的例子是在Beej的指南中

如果您需要现成的产品,请查看任何可用的消息产品。 它们需要最少量的编码才能开始,典型的例子是:

开源:

  1. OpenDDS - 基于DDS协议(非常高性能 - 用于潜艇,船舶控制系统等等)。它们的实现比原始boost :: asio略慢,但是为了便于使用和花里胡哨,难以击败。
  2. ZeroMQ - 类似于DDS,但基于MQ协议,再次非常快(数百万条消息/秒),MQ已经建立,但ZeroMQ还没有。
  3. AMQP - 我相信你能够在这个领域找到Red Hat的东西,同样非常快,还有一个新的协议。

商业:

  1. Tibco RV:除硬件供应商外,很难被击败
  2. 29West - 硬件(和软件 - 以为我从来没有亲自玩过它)
  3. 安慰 - 硬件
  4. Tervella - 硬件

最后三个假设你周围有几百万美元! ;)

我刚刚使用socket ++实现了一个网络解决方案,它运行得很好。 我相信它是boost asio的基础,所以如果你不想安装所有的boost,你可以查看它。

该库的要点是你可以使用你的套接字流,像std :: cout或std :: cerr一样发送数据。

编辑:如果你正在使用更新版本的Windows,那么这个库需要一些调整来编译(它可以正常用于XP,但显然一些网络代码被转移到win vista和7)。

在写第三条评论之前,我会在答案中收集它们

ucspi-TCP

Oldie但是好东西,用C编写,qmail是广泛使用的邮件服务器是基于它的。

https://cr.yp.to/ucspi-tcp.html

您可以查看Push Framework

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM