永发信息网

一个客户端socket 多线程请求数据,recv时数据混乱

答案:2  悬赏:50  手机版
解决时间 2021-04-04 20:23
客户端建立一个socket,且仅有这一个socket,用这个socket同时send,然后服务器返回数据,客户端多线程recv时几种数据混乱了。比如:客户端同时请求两个接口,1、获取地址 2、获取温度
第一个接口服务器返回数据:成都市金牛区
第二个接口服务器返回数据:二十八摄氏度

客户端的那一个socket接收的数据可能就是这样的:
成都市摄氏度
二十八金牛区

请问怎么解决这个单socket,多线程同时请求数据的问题呢?
PS:一个接口建立一个socket可以解决这个问题,但是我希望一个socket搞定
最佳答案
之所以接收数据时发生混乱,是因为,不能通过收到的数据分辨出它是哪个请求对应数据。
处理这类需要在同一个“通道”(socket) 请求不同服务的问题时,一个常见的做法是,在返回的数据中标识出这个数据对应的请求是哪个。
比如,req: id->1,返回是 rsp: id->1; req: id->2,返回是: rsp: id->2
然后,客户端根据返回的 id 找到对应的请求,就可以区分出数据,就不会混乱了。

加锁只是保证同一时间socket 只处理一个请求,不能保证客户端能够正确区分出请求对应的返回数据。
全部回答
给服务器端套接字加锁。 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有什么好用的股票软件,免费的
用简便计算:13.5x9.9+6.5x10.1=?
求LOL英雄联盟NVIDIA设置!
做梦梦到一个女的拿钉追着我扎我肚子怎么回事
嘴唇发黑脸发黑是什么原因
如何教育中学生,如何教育好学生
游泳运动员潜入水中看站在岸上的教练比实际位
堡垒之夜手游滑翔机翼龙怎么得 翼龙滑翔伞介
有哪些类似大话西游那样后知后觉的经典
爱的寄语老师对孩子,六年级最后一周家长给孩
脱式计算.2800÷100+789 ...
只有白金作家才能卖版权吗?而且为什么有的白
我是湖南文理学院的学生,毕业后工作单位要调
我有脱发,但现在有毛茸茸的毛发长出来
老是断网是怎么回事,公司局域网经常断网,该
推荐资讯
身高1.6m的人,站在平面镜前2m处,则人在镜中
检查近视眼是否饮酒设备的电路如图甲,R为酒
买2017款奇骏2.0好还是2017款翼虎1.5t好
生吃大豆王会不会中毒
张家口宣化那里有卖孔明灯的?多少钱一个
男女相思最佳表达诗词
午未申日,在12月是哪天
坚守志向的诗句,求关于梦想的古诗
中国以前一个团多少人,中国有多少个总局
渔民征地拆迁享有哪些权利
如果两个数的和是100,其中一个数用字母a表示
格兰仕电烤箱好吗,格兰仕冰箱质量怎么样?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?