我知道UDP会更快,但同时需要保证可靠性,因此我正在寻找TCP。
我想我可以尝试每个示例并尝试计时,但我想知道这里是否有一位套接字/Winsock专家能提供一个超级简单的C/C++服务器/客户端,并附带一些计时函数(高分辨率)。我说超级简单,因为我正在尝试确定套接字在我的机器上传输的速度(以及最快的方式),当然,它可以包括关闭Nagle算法,这正是我想要做的。我不确定其他人使用什么技巧。
谢谢。
Boost Asio 可能是你最好的选择。它是一个非常好的库,具有定时支持和你需要启动的所有功能。
编辑:我知道这不是一个预构建的客户端/服务器,这正是你要找的,但是 Asio 使得只需几行代码就可以轻松实现你想要的功能。
如果您想要一个现成的产品,可以查看任何可用的消息传递产品。它们需要最少的编码才能开始运行,典型的例子包括:
开源:
商业:
最后三个假设您手头有几百万美元!;)
我刚刚使用socket++实现了一个网络解决方案,它运行得非常好。我相信这是boost asio的基础,所以如果你不想安装所有的boost,可以试试这个。
这个库的重点是你可以使用流来发送数据到你的套接字,就像你发送到std::cout或std::cerr一样。
编辑:如果你正在使用更高版本的Windows,则需要对该库进行一些调整才能编译(它在XP上运行良好,但显然一些网络代码已经移动到win vista和7中)。
在撰写第三个评论之前,我将它们收集在一个答案中。
有一个叫做RUDP的协议,由于省略了连接设置步骤,因此可靠且快速:en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol;还请参见What do you use when you need reliable UDP?。
根据Steven的《UNIX网络编程I》第369页,我建议使用T/TCP协议,至少FreeBSD已实现:http://www.manpages.info/freebsd/ttcp.4.html