请高手指点一下,我用TClientSocket和TServerSocket编写的程序,当TClientSocket连续(大概有1000-2000条记录左右,一次

  • 主题发起人 主题发起人 zawload
  • 开始时间 开始时间
Z

zawload

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手指点一下,我用TClientSocket和TServerSocket编写的程序,当TClientSocket连续(大概有1000-2000条记录左右,一次连续就要发这么多)向TServerSocket发送数据(数据库里的一些记录)时,发了一点(大概100-200条)后就发不出去了!请问....(30分)<br />请高手指点一下,我用TClientSocket和TServerSocket编写的程序,当TClientSocket连续(大概有1000-2000条记录左右,一次连续就要发这么多)向TServerSocket发送数据(数据库里的一些记录)时,发了一点(大概100-200条)后就发不出去了!请问是怎么回事?先谢谢大家!没有分了,只有35分了!
 
tcp/ip底层的缓存是有限的,如果一次发送的数据包比缓冲区大,就会发送不能完全成功,
你可以把数据包拆成小包,分成多次发送就可以啦。
 
to chenxz:怎样对数据拆包,能详细点码
 
就是把少数的几条记录作为一个数据包来发送,对全部的记录循环发送。
 
缓冲区满了,发送的时候要用定时器,每段时间发一点,要么可以判断SOCKET缓冲区是否满了.
 
应该可以发,可能是你发送的有问题
 
绝对没有问题的,我原来的程序的数据量和你的差不多一点问题都没有,是不是你的发送和接收程序有问题,接收程序也是你写的吗?

我上次和韩国工程师调试的时候也有类似问题,但是后来解决了,但是他是C写的,跑在Linux下面,我是Delphi写的跑在Win2000下面,我数据量大的时候他没有及时应答就出错了,所以有时候接收的程序也是非常重要的,要注意匹配,如果是你自己写的话,如果接收程序要涉及数据库操作,那么你可以适当的减缓发送速度,让接收程序有时间进行数据库操作。
 
hehe ,bu dong [:D]
 
bu dong 你也上来?
 
可以异步做,服务端完成后,返回一成功标志,客户端继续发,否则做别的事情
 
后退
顶部