用TClientSocket和TServerSocket交换数据这么不可靠吗?(100分)

  • 主题发起人 主题发起人 along
  • 开始时间 开始时间
A

along

Unregistered / Unconfirmed
GUEST, unregistred user!

把一大文件割成数块,用TClientSocket和TServerSocket进行数据的传

输,却发觉总有几块被丢弃了,用TClientSocket和TServerSocket交换数据这

么不可靠吗?因实时要求,又不能进行数据重传,又该如何?
 
你们怎么这么喜欢用TClientSocket和TServerSocket,一点都不好用
为什么不用TNMStrm和TNMStrmServ,看/demos/fastnet/下的例子多简单
根本不用拼接数据包。
 
用TClientSocket和TServerSocket不应该有问题的.
 

不过问题还是偏偏出现了!
 
用TClientSocket和TServerSocket不应该有问题的
在两次传送之间应延迟一下、以前试过,如不作延迟
会丢失数据,
不过不用将文件割成数块,曾传送10M大的文件未出现数据丢失


 
因为ip虽然只是一个最大努力投递的网络,但tcp提供了端到端的可靠连接,
所以原理上是没有问题的,但delphi中用Socket控件编程时,如果你用非阻
塞方式,所有线程,同步等问题不由自己控制,你可以use rawsocket.
 
VCL的SOCKET BUG 很多。
但你的问题太SIMPLE。
最好加上您简单的代码。
 
不会吧,我前段时间可以测试了很久的,没问题
 
推荐block模式
 
去看SendBuf的help,返回值为-1时情况:如下试试
while (Socket->SendBuf(buf, Count) == -1)
Sleep(100);
 
推荐使用ics,
从来没出过差错
 
应该没有问题的如果是UDP出了丢包的现象还说的过去,TCP不会这样的呀
 
多人接受答案了。
 
在传输过程中双方约定好传输规则(阻塞或非阻塞),加上校验(如在UNIX用CRC16校验,
在WINDOWS用CRC16,CRC32.但双方要相同的校验),在接受方校验不对就发出冲发请求,在发
送方接受到重发请求后再次发送.一般情况下不会丢报的。只有在网络有问题时才可能出
现这种情况!
 
后退
顶部