局域网通讯的问题(100分)

  • 主题发起人 主题发起人 lqd8282
  • 开始时间 开始时间
L

lqd8282

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个局域网通讯的程序,现在可以实现登录用户之间文字聊天的功能(通过服务器中转),现在想实现点对点的文件传输,但是发送端可以发送,接收端老是不能成功接收(有时候是最后的一个数据包没有接收,有时候就用好多都收不到),大家帮忙分析分析。我用(TIdUdpServer,TIdUdpClient)组件。
 
提两个可供参考的解决方法:
1.换用tcp传文件。udp丢包也不算太冤。
2.还用UDP,但借鉴TFTP协议的方法,用“停止-等待”来实现。
 
每个包发送的时候,加一个sleep的延时,效果会好一些,具体延时多少要你自己设置
 
to LeeChange:
1.但是TCP要实现点对点的话,可能不太好吧!我想应该是我没有控制好,QQ传文件就没有出现丢包的现象。
2.您说的TFTP的“停止、等待”是不是就是发送端发送一个包后,停止,等待接收端收到包返回确认信息后再发。但是要是丢了的话,就不返回确认信息,那就老等着也不是一回事啊?
to 爱元元的哥哥:
我现在就使用Sleep()解决了问题,但是不够彻底,当文件超过100兆的时候有时候还是最后一个包丢了。

还有昨天忘了一点:就是多个用户同时给一个用户发送文件,大家谁做过吗?并发是怎么控制的?
 
1。TCP实现也没什么“不太好吧”一说,FTP不就是TCP实现的嘛。再说,tcp只要一个端口就可以实现“多个用户同时给一个用户发送文件”。
2。干吗要“老等着”,超时重发不就得了。
 
我也碰到了类似的问题,弄了一天也没搞定,由于是第一次搞网络通信,所以还请高手们多多指教,谢谢!
因为工作需要,向后台unix主机取数据文件,大小均在10-50M之间,用TClientSocket控件在阻塞方式下实现,连接,握手通信均正常,只是接收到的文件出现内容不完整.但接收下来的文件大小与后台预先提供的文件大小相同,很奇怪的一问题.
 
多人接受答案了。
 
后退
顶部