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

umbrella1984 2006-03-03 05:15:37
发送的SOCKET有很多个,都是sendto,但是接收的线程和SOCKET只有一个。我现在的结果是50个线程同时或每个线程间隔500毫秒以后接收的时候会收到重复的数据。比如26个线程发送26个字母,但接收到的切有重复的字母在里面。因为我这个程序要求速度要很快,发送的时候速度达到了,但接收的时候切出现这个问题,郁闷,请各位知道怎么解决的献策了啊!!!!
...全文
314 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
umbrella1984 2006-04-04
  • 打赏
  • 举报
回复
客戶端很多線程連接到服務器端(accept候新建的接收線程),並且每個線程都發送了唯一的數據,但服務器端切收到有重復的數據。
striking 2006-04-04
  • 打赏
  • 举报
回复
UDP每次收到的都是一个完整的包.

你说发送的SOCKET有很多个, 不明白丫. 如果服务器只有一个socket接收,那么客户端怎么会有很多socket?
viewerviewer 2006-04-04
  • 打赏
  • 举报
回复
呵呵,估计有不少人看了都觉得是一头雾水,反正俺是,楼主可能却实是没有表达明白...
charles_y 2006-04-04
  • 打赏
  • 举报
回复
客戶端很多線程連接到服務器端(accept候新建的接收線程),並且每個線程都發送了唯一的數據,但服務器端切收到有重復的數據。
---------------------------------------------------------------------------------------------
到底哪个是客户端?哪个是服务器端?

还有,既然是tcp,服务器端就需要维护一个跟客户端对应的socket 列表,一一对应的关系怎么会需要sendto 呢?
striking 2006-04-04
  • 打赏
  • 举报
回复
你那是tcp吧, 怎么我看成是udp的.

汗一下, lz表述不清楚. 批评一下.

浪费大家时间.

tcp有sendto吗?

你发的数据有定义包头吗? 服务器怎么接收的?
xiaoran2267 2006-04-03
  • 打赏
  • 举报
回复
因为用的是SENDTO ,如果每个客户线程只发一次,不丢就不错了。怎么会有重复的哪。是不是重复发送了呀!
gohappy_1999 2006-04-03
  • 打赏
  • 举报
回复
重复接收应该是发送端重复发送造成的吧
umbrella1984 2006-04-03
  • 打赏
  • 举报
回复
问题是一个线程已经接收了数据了,但另一个线程也会收到同样的数据。
charles_y 2006-03-03
  • 打赏
  • 举报
回复
有什么必要这样做吗?
这么做比较难,需要区分数据源,保证能组成一个个完整的逻辑包
lc_mtt 2006-03-03
  • 打赏
  • 举报
回复
我觉得,就算客户端有一亿个线程发数据,也快不去吧,毕竟服务端只有一个线程接收...
stevecrisewu 2006-03-03
  • 打赏
  • 举报
回复
你要定义自己的协议
封装一个完整包

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧