求教快速网络传输数据问题(200分)

  • 主题发起人 fifa2000
  • 开始时间
F

fifa2000

Unregistered / Unconfirmed
GUEST, unregistred user!
两机一联网,都装有tcp/ip协议
一台计算机采集数据,需要实时的将数据传至另一台计算机
大约1秒钟传输一次,数据量不大,10KB左右
我用nmstrm,nmstrmserv作,就是将采集的数据写成一个文件,发过去
另一计算机接到文件后,处理数据
实际中我发现,只有采集结束的前一次数据发过来了,难道1秒钟的时间不足以
两机建立连接吗?
nmstrm这种方法是不是每次都需要先建立连接?
那位替我想想,或给个可行的办法。
 
你用两机联网,可用Upd通讯。
 
udp不安全,用TServerSocket/TClientSocket吧
 
to panyongze:用nmftp不好吗?我是传输文件。
我发现问题的关键是建立连接化的时间过多。
 
所以建议你用upd,他不用建立连接。
 
TCP/IP在第一次连接时比较慢,连接上以后每次操作就不会慢了。
 
to 教父:
我采用了nmftp,传送两个5k的文件,connect事件放一个按钮事件里,
然后执行发送,发现每次差不多需要2s,:(
 
to tyzhang:
我试试看
 
to tyzhang:
我用了nmudp,我发了24000个字节,可是NumberBytes总是-1。
我换成4000个字节,仍是这样。为什么呢?
 
原来是有字节数的限制,1000就可以了
 
你是通过局域网还是通过互联网传输?
你用FTP的话,是不是每次都重新connect?传送完后就断开?如果这样的话时间当然会长了。
我前面说的是:比如你用TServerSocket/TClientSocket,那么在连接的时候会慢一些,建立
连接之后,再进行传送的话就应该不会超过一秒了。
用UDP由于少了第一步的握手部分,所以显得要快些,但实际上在以后的操作中并不会快,
而且它不如Socket可靠,它惟一的优势在于它不需要建立连接,对资源消耗要小一些,你
可以择优使用 :)
 
to fifa2000:
udp是有字节限制的,不同的协议其限制也不一样,但我的经验是在400个字节自内肯定
没问题,对于你的10k数据可以采用少量多次发送。
 
to tyzhang:
再请教个问题:
udp.sendbuffer 需要char型的数组
我存储的数祖是single型的,如何转换啊?
我想把数据存成一个文件,再blockread,还有更好的办法吗?
 
fifa2000:
就算在LAN,UDP有时也会丢数据,因此用于监视屏幕还可以,用于其它并不理想啊。
 
to fifa2000:
用udp.SendStream吧,将single型的数据写入流中,然后发出。
 
to panyongze:
谢谢,我就是用于监视
你说的丢数据具体是指什么?是一次sendbuffer的都丢掉,还是某一次sendbuffer中
丢掉几个?如果是前者,那可以满足我的需求,如果是后者,那就不妙了
 
用于监视就没问题,一般不是全丢,而是一部分,你可以在接收时检查数据的完整性,如
不完整就丢掉。
 
谢谢大家
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部