重用Asio连接

时间:2013-04-15 18:12:56

标签: c++ http tcp boost-asio keep-alive

我正在开发一个目前我拥有网络服务器的项目。我必须添加该功能,以便对于每个请求,我需要向其他服务器发送多个请求,获取响应,并将结果发送回原始客户端。这些服务器是高吞吐量的,所以我开始担心套接字的数量以及设置新线程/套接字的速度,以便通过许多套接字发送许多请求。所以我开始认为有一个(或几个连接),对每个客户开放将有助于解决这个问题。我不确定持久连接和ASIO如何工作。我有些问题:

- 如何使用ASIO tcp套接字设置保持活动时间。

- 我可以通过同一个套接字发送多个并发请求吗?我是否会遇到结果顺序的问题(每个结果都应该有一个Id,所以我不是指在顺序发送的结果中的顺序,但是如果响应是多个数据包,则更多的数据包顺序,我会对包的顺序有问题吗。

如果重要的话,所有请求都是HTTP GET / POST请求。

本主题中的任何信息都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

TCP套接字充当数据流,您在一端写入的数据将在另一端以相同的顺序接收。如果您的协议可以处理它,您可以通过同一个套接字发送多个请求。

您提到并发请求,因此您需要非常小心,不要交错两个不同请求的写调用。如果你可以确保每个结果都是原子地写的,那么我认为使用套接字来处理多个请求没有问题(你可以用一个回复队列来完成)。

您可以设置标准套接字保持活动here