[英]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的指南中 。
如果您需要现成的产品,请查看任何可用的消息产品。 它们需要最少量的编码才能开始,典型的例子是:
开源:
商业:
最后三个假设你周围有几百万美元! ;)
我刚刚使用socket ++实现了一个网络解决方案,它运行得很好。 我相信它是boost asio的基础,所以如果你不想安装所有的boost,你可以查看它。
该库的要点是你可以使用你的套接字流,像std :: cout或std :: cerr一样发送数据。
编辑:如果你正在使用更新版本的Windows,那么这个库需要一些调整来编译(它可以正常用于XP,但显然一些网络代码被转移到win vista和7)。
在写第三条评论之前,我会在答案中收集它们
RUDP是可靠且快速的,因为它省略了连接设置:en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol; 另请参阅当您需要可靠的UDP时使用什么?
出于史蒂文的UNIX网络编程I,p。 369我建议T / TCP至少为FreeBSD实现: http : //www.manpages.info/freebsd/ttcp.4.html
您可以查看Push Framework 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.