L lqd8282 Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #1 我做了一个局域网通讯的程序,现在可以实现登录用户之间文字聊天的功能(通过服务器中转),现在想实现点对点的文件传输,但是发送端可以发送,接收端老是不能成功接收(有时候是最后的一个数据包没有接收,有时候就用好多都收不到),大家帮忙分析分析。我用(TIdUdpServer,TIdUdpClient)组件。
我做了一个局域网通讯的程序,现在可以实现登录用户之间文字聊天的功能(通过服务器中转),现在想实现点对点的文件传输,但是发送端可以发送,接收端老是不能成功接收(有时候是最后的一个数据包没有接收,有时候就用好多都收不到),大家帮忙分析分析。我用(TIdUdpServer,TIdUdpClient)组件。
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #2 提两个可供参考的解决方法: 1.换用tcp传文件。udp丢包也不算太冤。 2.还用UDP,但借鉴TFTP协议的方法,用“停止-等待”来实现。
爱 爱元元的哥哥 Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #3 每个包发送的时候,加一个sleep的延时,效果会好一些,具体延时多少要你自己设置
L lqd8282 Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #4 to LeeChange: 1.但是TCP要实现点对点的话,可能不太好吧!我想应该是我没有控制好,QQ传文件就没有出现丢包的现象。 2.您说的TFTP的“停止、等待”是不是就是发送端发送一个包后,停止,等待接收端收到包返回确认信息后再发。但是要是丢了的话,就不返回确认信息,那就老等着也不是一回事啊? to 爱元元的哥哥: 我现在就使用Sleep()解决了问题,但是不够彻底,当文件超过100兆的时候有时候还是最后一个包丢了。 还有昨天忘了一点:就是多个用户同时给一个用户发送文件,大家谁做过吗?并发是怎么控制的?
to LeeChange: 1.但是TCP要实现点对点的话,可能不太好吧!我想应该是我没有控制好,QQ传文件就没有出现丢包的现象。 2.您说的TFTP的“停止、等待”是不是就是发送端发送一个包后,停止,等待接收端收到包返回确认信息后再发。但是要是丢了的话,就不返回确认信息,那就老等着也不是一回事啊? to 爱元元的哥哥: 我现在就使用Sleep()解决了问题,但是不够彻底,当文件超过100兆的时候有时候还是最后一个包丢了。 还有昨天忘了一点:就是多个用户同时给一个用户发送文件,大家谁做过吗?并发是怎么控制的?
L LeeChange Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #5 1。TCP实现也没什么“不太好吧”一说,FTP不就是TCP实现的嘛。再说,tcp只要一个端口就可以实现“多个用户同时给一个用户发送文件”。 2。干吗要“老等着”,超时重发不就得了。
T trailbreaker Unregistered / Unconfirmed GUEST, unregistred user! 2004-05-31 #6 我也碰到了类似的问题,弄了一天也没搞定,由于是第一次搞网络通信,所以还请高手们多多指教,谢谢! 因为工作需要,向后台unix主机取数据文件,大小均在10-50M之间,用TClientSocket控件在阻塞方式下实现,连接,握手通信均正常,只是接收到的文件出现内容不完整.但接收下来的文件大小与后台预先提供的文件大小相同,很奇怪的一问题.
我也碰到了类似的问题,弄了一天也没搞定,由于是第一次搞网络通信,所以还请高手们多多指教,谢谢! 因为工作需要,向后台unix主机取数据文件,大小均在10-50M之间,用TClientSocket控件在阻塞方式下实现,连接,握手通信均正常,只是接收到的文件出现内容不完整.但接收下来的文件大小与后台预先提供的文件大小相同,很奇怪的一问题.