CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

多个线程向一个接收端发送数据,怎么做到数据不错乱和重复接收?

楼主umbrella1984(雨伞(KEN))2006-03-03 17:15:37 在 VC/MFC / 网络编程 提问

发送的SOCKET有很多个,都是sendto,但是接收的线程和SOCKET只有一个。我现在的结果是50个线程同时或每个线程间隔500毫秒以后接收的时候会收到重复的数据。比如26个线程发送26个字母,但接收到的切有重复的字母在里面。因为我这个程序要求速度要很快,发送的时候速度达到了,但接收的时候切出现这个问题,郁闷,请各位知道怎么解决的献策了啊!!!! 问题点数:50、回复次数:11Top

1 楼stevecrisewu(月亮骑士)回复于 2006-03-03 17:21:54 得分 4

你要定义自己的协议  
  封装一个完整包Top

2 楼lc_mtt(柠檬把大飞猪裤子一脱...被大飞猪投诉了)回复于 2006-03-03 17:49:44 得分 4

我觉得,就算客户端有一亿个线程发数据,也快不去吧,毕竟服务端只有一个线程接收...Top

3 楼charles_y(每天上网一小时)回复于 2006-03-03 18:04:28 得分 4

有什么必要这样做吗?  
  这么做比较难,需要区分数据源,保证能组成一个个完整的逻辑包  
  Top

4 楼umbrella1984(雨伞(KEN))回复于 2006-04-03 15:25:23 得分 0

问题是一个线程已经接收了数据了,但另一个线程也会收到同样的数据。Top

5 楼gohappy_1999(碧水蓝天)回复于 2006-04-03 16:01:08 得分 4

重复接收应该是发送端重复发送造成的吧Top

6 楼Cuiql(向前冲,向后看)回复于 2006-04-03 21:36:25 得分 6

因为用的是SENDTO   ,如果每个客户线程只发一次,不丢就不错了。怎么会有重复的哪。是不是重复发送了呀!Top

7 楼striking(庸人自扰)回复于 2006-04-04 09:37:09 得分 8

UDP每次收到的都是一个完整的包.  
   
  你说发送的SOCKET有很多个,   不明白丫.   如果服务器只有一个socket接收,那么客户端怎么会有很多socket?Top

8 楼umbrella1984(雨伞(KEN))回复于 2006-04-04 12:55:23 得分 0

客戶端很多線程連接到服務器端(accept候新建的接收線程),並且每個線程都發送了唯一的數據,但服務器端切收到有重復的數據。Top

9 楼striking(庸人自扰)回复于 2006-04-04 14:24:10 得分 8

你那是tcp吧,   怎么我看成是udp的.  
   
  汗一下,   lz表述不清楚.   批评一下.  
   
  浪费大家时间.  
   
  tcp有sendto吗?  
   
  你发的数据有定义包头吗?   服务器怎么接收的?Top

10 楼charles_y(每天上网一小时)回复于 2006-04-04 14:46:36 得分 8

客戶端很多線程連接到服務器端(accept候新建的接收線程),並且每個線程都發送了唯一的數據,但服務器端切收到有重復的數據。  
  ---------------------------------------------------------------------------------------------  
  到底哪个是客户端?哪个是服务器端?  
   
  还有,既然是tcp,服务器端就需要维护一个跟客户端对应的socket   列表,一一对应的关系怎么会需要sendto   呢?Top

11 楼viewerviewer(viewer)回复于 2006-04-04 17:23:37 得分 4

呵呵,估计有不少人看了都觉得是一头雾水,反正俺是,楼主可能却实是没有表达明白...Top

相关问题

  • 再拿100,多线程数据接收中的错误.
  • 串口接收线程"受扰"超时,影响接收数据的问题?
  • 在子线程中动态创建TClientSocket,如何发送接收数据?
  • winsockAPI编程中的一个数据接收的多线程问题
  • 管道线程能够接收数据,然后显示异常:java.io.IOException:write end dead;
  • 如何来停止一个等待接收客户端数据的线程;
  • 问一个UDP多线程发送和接收数据的问题
  • C# 线程问题,socket接收到数据后,分不够再加
  • 我的多线程程序:主线程每接收到一个完整的数据包,就启动一个ADO线程.(只用一个连接)
  • 管道线程能够接收数据,然后显示异常:java.io.IOException:write end dead;(紧急求救,急急急)

关键词

  • 线程
  • 数据
  • socket
  • 服务器
  • 客户
  • 接收
  • 數據
  • 線程
  • 发送
  • 收到

得分解答快速导航

  • 帖主:umbrella1984
  • stevecrisewu
  • lc_mtt
  • charles_y
  • gohappy_1999
  • Cuiql
  • striking
  • striking
  • charles_y
  • viewerviewer

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo