具有多个逻辑数据流的单个套接字连接(区分数据包)
Single socket connection with multiple logical data streams (differentiating packets)
我正在用C++制作一个程序,使用windows套接字,我想要一个套接字,但能够从不同的线程发送数据,并区分服务器端哪个线程发送了数据,因为它们有不同的应用程序。本质上是使用单个套接字连接的逻辑数据流。我很难找到区分数据包服务器端的方法。我能想到的最好的方法是用几个字节来启动每个数据包,指示是哪个线程发送的。有更好的方法吗?
类似于如何将单个端口用于多个逻辑数据流(Winsock)?但我很难区分数据包。
我认为,最好的办法是将一个唯一的id与每个任务关联起来,创建一个处理网络的线程,并(如您所说)将任务id添加到数据包中。
在接收方,你也可以这样做:一个线程读取数据包,并根据task-id分发它们的内容。
如果所谓的数据包不是服务器所知道的全部固定长度,则还需要指示数据包的开始或结束位置。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 从网链套接字请求连接设备的列表
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 如何在 2 台主机之间保持 UDP 套接字连接打开
- C++关闭套接字以启动新连接
- Opencv 不适用于套接字连接
- 使用单个套接字处理多个传入的 UDP 连接
- 连接UDP套接字,但仍然接收来自其他源的数据报
- C++通过套接字连接发送矢量
- 为什么我在蓝牙连接()上收到"java.io.IOException:读取失败,套接字可能关闭或超时,读取re
- boost1.62 在 docker 容器中重新连接后套接字损坏
- 尝试连接到 TCP 套接字 (Linux) 时连接被拒绝
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- 接受套接字,但m_socket.远程终结点引发 传输终结点未连接
- 提振.Asio:对每个连接/套接字使用“io_service”是件好事吗?