我正在使用Windows套接字在C ++中创建一个程序,我想要一个单一的套接字,但能够从不同的线程发送数据,并区分服务器端哪个线程发送数据,因为它们有不同的应用程序。使用单个套接字连接的基本逻辑数据流。我找不到区分数据包服务器端的方法。我能想到的最好的方法是用几个字节开始每个数据包,指示哪个线程发送了它。还有更好的方法吗?
与How to use single port for multiple logical data streams (Winsock)?类似,但我坚持区分数据包。
答案 0 :(得分:0)
你最好的选择(我认为)是将一个唯一的id与每个任务相关联,创建一个处理网络的线程,并且(如你所说)将任务id添加到数据包中。
在接收方,您也会这样做:单个线程读取数据包并根据任务ID分发其内容。
答案 1 :(得分:0)
如果所谓的数据包并非所有服务器都知道的固定长度,您还需要指示数据包的开始或结束位置。