多个线程向一个接收端发送数据,怎么做到数据不错乱和重复接收?
发送的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;(紧急求救,急急急)




