(高分请教) Socket.SendText 的长度限制。(200分)

  • 主题发起人 主题发起人 jjid
  • 开始时间 开始时间
J

jjid

Unregistered / Unconfirmed
GUEST, unregistred user!
用ServerSocket,ClientSocket的 SendText 传送数据库中的几条记录,
(一条记录约200字节),由目标计算机将传送过来的记录写库。
但不知为何,无论传多条记录,在目标机上只有2条写入。
将传送类型改为ANSIString照旧。
 
调用SendText的时候并不一定会把所有的数据都发出去的,我建议你使用
TWinSocketStream来发送和接受数据,这样比较可靠.
 
用ServerSocket,ClientSocket的 SendText 传送数据库中的几条记录,
(一条记录约200字节),由目标计算机将传送过来的记录写库。
无论传多条记录,在目标机上只有2条写入,
原因是:
1.在n个200bytes的连续传送之间如果没有时间间断,则相当于一个n*200 bytes的传送;
可以,sleep(100)....
2.若用了timer而clientsocket不是nonblocking;
3.其他代码的问题.
 
建议用TWinSocketStream
 
我也遇到过类似的问题.可以把你的记录拆分成一小块一小块的往外发送,这样一定可以解决.
只是要自己解决好记录间分界及发送结束标志的处理,以便在client端将数据重现.

 
谢谢诸位的提示,小弟初试网络编程,还望大虾们能否贴上一
段WinsocketStream的代码?

 
1。使用SENDBUF和RECEIVEBUF
2。如何你是在ONCLIENTREAD或ONREAD事件中响应的,
则可能会出现发送方发两次,而接收方只有一次事件
产生。所以你的RECVTEXT应该很大,并将两次事件
所收到的字符合在一起,然后再解开成多条记录,
写入库中。
 
分隔,用TWinSocketStream
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
873
DelphiTeacher的专栏
D
后退
顶部