具有多个逻辑数据流的单插槽连接(区分数据包)

时间:2012-03-28 12:46:30

标签: c++ windows sockets

我正在使用Windows套接字在C ++中创建一个程序,我想要一个单一的套接字,但能够从不同的线程发送数据,并区分服务器端哪个线程发送数据,因为它们有不同的应用程序。使用单个套接字连接的基本逻辑数据流。我找不到区分数据包服务器端的方法。我能想到的最好的方法是用几个字节开始每个数据包,指示哪个线程发送了它。还有更好的方法吗?

How to use single port for multiple logical data streams (Winsock)?类似,但我坚持区分数据包。

2 个答案:

答案 0 :(得分:0)

你最好的选择(我认为)是将一个唯一的id与每个任务相关联,创建一个处理网络的线程,并且(如你所说)将任务id添加到数据包中。

在接收方,您也会这样做:单个线程读取数据包并根据任务ID分发其内容。

答案 1 :(得分:0)

如果所谓的数据包并非所有服务器都知道的固定长度,您还需要指示数据包的开始或结束位置。