提问者:小点点

重用Asio连接


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

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

-我可以通过同一个套接字发送多个并发请求吗?我会不会遇到结果顺序的问题(每个结果都应该有一个Id,所以我的意思不是结果乱序发送的顺序,而是更多的数据包顺序,如果一个响应不止一个数据包,我会不会有数据包顺序的问题)。

所有请求都HTTPGET/POST请求,如果这也很重要的话。

如能提供这方面的任何信息,将不胜感激。谢谢。


共1个答案

匿名用户

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

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

您可以在此处设置标准套接字保持活动状态。