传输丢数据怎么办啊? 高分求急救
winsock
发送程序在for循环里向接受程序发送字符串,可能是速度太快了,第一二个字符串能收到,然后会丢大概几十个字符串,大概到第3十个开始才能每个都收到。
就象这样
1 ok
2 ok
5 丢了:(
18 随机出现零星的几个 ;(
34 开始正常了 :)
35 下面都正常
36
……
后来把接受程序的进程优先级提供到High,大部分情况不会丢数据了。 可是怎么能保证一定不会丢数据呢? 我的程序不能乱丢数据的,一定得保证一个都不少。
请大虾们出手相救~~
问题点数:99、回复次数:14Top
1 楼Jneu(沧海桑田)回复于 2001-09-27 16:41:35 得分 30
插入DELAY函数!Top
2 楼Jneu(沧海桑田)回复于 2001-09-27 16:42:36 得分 0
upTop
3 楼ripper(rIPPER)回复于 2001-09-27 17:15:46 得分 0
还有其他办法嘛?Top
4 楼ripper(rIPPER)回复于 2001-09-28 01:08:04 得分 0
我顶Top
5 楼hellion(恶人)回复于 2001-09-28 10:11:45 得分 30
局域网内一般不会有这种问题,不知你有没有判断发送的返回结果,是否根本没有发送成功。
即使发送成功,也不能保证另一端肯定能收到,最根本的解决办法是增加确认信息,采用重发机制。Top
6 楼ripper(rIPPER)回复于 2001-09-28 11:23:46 得分 0
我就是局域网啊,在本机上是上面说的情况,分两台机就收不到几个了,好像是因为socket是非同步式的,发的飞快地发完了,收的只收到两个 ;(Top
7 楼ripper(rIPPER)回复于 2001-11-25 03:41:08 得分 0
是不是阻塞式socket非要有消息循环来协调啊?呕的程序是控制台的,里面用blocked socket就是不行; (
那位能帮帮我啊~Top
8 楼icessl(冰山上的来客)回复于 2001-11-25 09:46:46 得分 10
你用的是 TCP 还是 UDP ?UDP 容易丢数据,TCP 不会丢(如果控制得好的话)。Top
9 楼ripper(rIPPER)回复于 2001-11-26 00:37:13 得分 0
用的是tcpTop
10 楼wangjunhothot(阿俊)回复于 2001-11-26 02:38:34 得分 0
T复杂了Top
11 楼Kronus(叶落归根)回复于 2001-11-26 03:23:21 得分 19
你发送之前检查一下是否可以发送,例如响应FD_WRITE消息Top
12 楼ripper(rIPPER)回复于 2001-12-20 15:20:36 得分 0
请问怎么检查啊?
偶用的是CSocket,用ioctl置为阻塞模式
请大虾帮忙啊~Top
13 楼ripper(rIPPER)回复于 2001-12-20 15:21:29 得分 0
请问怎么检查啊?
偶用的是CSocket,阻塞模式,带mfc支持的console程序Top
14 楼nana11(汉堡)回复于 2001-12-20 15:49:28 得分 10
不是丢了,是在buffer里面。如果你再一次读的话,韩会读出数据,肯定是你说的那些被你称为丢的数据。课来电讨论
来电:spec_sh@sina.comTop




