请教:winsock控件的传输丢失数据的问题.

xh1 2001-08-27 12:10:10
我通过winsock控件用tcp协议来进行一些简单的字符传输。

但发现了有这样一种问题:如果数据接收端在执行一个比较耗时的命令时,

winsock控件的DataArrival事件不会触发(好像错过了?),造成了数据丢失,

我查以前的帖子,有的帖子中说tcp协议是一种可靠的连接,是不是不应该出现

这种丢失数据包的问题呀???
...全文
220 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xh1 2001-08-29
  • 打赏
  • 举报
回复
最后up...
xh1 2001-08-29
  • 打赏
  • 举报
回复
加分求解
xh1 2001-08-29
  • 打赏
  • 举报
回复
无解给分.....
xh1 2001-08-28
  • 打赏
  • 举报
回复
up
tszw 2001-08-28
  • 打赏
  • 举报
回复
go first
xh1 2001-08-28
  • 打赏
  • 举报
回复
up
tszw 2001-08-28
  • 打赏
  • 举报
回复
up
tszw 2001-08-28
  • 打赏
  • 举报
回复
up
tszw 2001-08-28
  • 打赏
  • 举报
回复
go first
songyueliang 2001-08-27
  • 打赏
  • 举报
回复
你所说的比较耗时的命令是什么?
我也正在做WINSOCK的程序,
我怎么没有遇到过呢。
xh1 2001-08-27
  • 打赏
  • 举报
回复
关键在于,不管对方有没有收到,发送一方都会产生sendcomplete事件,

这个事件是不是指在发送完毕(发送成功?)才产生的??? 如果发送失败,

客户端应该会出现error吧,现在发送端正常,接收端没有发生DataArrival

事件(在执行一个比较耗时的命令的前提下),用TCP协议是不是也需要自己

检验一下数据的发送情况?
songyangk 2001-08-27
  • 打赏
  • 举报
回复
我感觉应该判断自己的状态,数据发送是否成功,否则,如果发送时网络终断,对方是肯定收不到的。
xh1 2001-08-27
  • 打赏
  • 举报
回复
up
xh1 2001-08-27
  • 打赏
  • 举报
回复
还有一点我忘了说了,
如果接收端开了一个messagebox(),此时DataArrival在收到数据时也不会触发.


to ok2001(阿智):谢谢关照;) 我发送的数据只有几个字符不会出现缓冲区上溢的问题吧?

能不能再详细的解释一下呀,我很.....笨的。:)
ok2001 2001-08-27
  • 打赏
  • 举报
回复
我在使用winsock控件过程中,发现winsock在发送信息时,当要发送信息的大小大于等于8192个字节时,就会使用分隔信息传诵即每次8192个字节。
同时当在DataArrival事件里程序中如果有延时的指令出现,就会产生数据丢失的情况,
最典型的就是使用Doevents,肯定会丢失数据,
我解决的方法是,用一个足够大的全局数组来储存信息而且是要字节类型的.
xh1 2001-08-27
  • 打赏
  • 举报
回复
ozw(沧浪客) : 怎么进行检验呀???(本人极菜...请捡绿色的指教)


songyueliang(宋月亮) 你所说的比较耗时的命令是什么?
(比如一个循环,一个查询数据的select,都有可能造成程序暂时的停顿
如果此时发送端发出数据,一准肯定是丢失的,:( 我试了多次啦.)


ozw 2001-08-27
  • 打赏
  • 举报
回复
进行CRC校验,如果数据有错误,请求重发

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧