关于winsock的dataArrival问题?我实在解决不了了.求大侠们进来瞧瞧

dhzsir 2004-09-10 11:05:39
我用winsock做了一个http下载程序,如http://localhost/1.exe 但是经常数据包还未完全接收完
就在winsock_dataarrival事件中报"实时错误:'40006': 所需事务或请求的错误协议或连接状态" 这时候的winsock.state值为8. 但我程序中根本未关闭过连接呀
...全文
271 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aijie099 2004-11-02
  • 打赏
  • 举报
回复
你是否,在close 事件中把连接关了。
winsock控件的包只有8K而,服务器给你发来的包可能不止8K而,服务器发完之后,就关闭了。事实上winsock已经接收完了。
而winsock虽然,全部接收了。但是winsock控件,还是会,每8K产生一次 dataarrival 事件。
如果,winsock控件发现,服务器关闭也关闭的话,那就会出错。
这就是用winsock控件,和用winsockAPI函数的区别。
loucai 2004-11-02
  • 打赏
  • 举报
回复
up
jam021 2004-10-27
  • 打赏
  • 举报
回复
关注,帮你顶!
zyg0 2004-10-26
  • 打赏
  • 举报
回复
winsock_dataarrival(byval bytestotal as long)

winsock.getdata data,vbstring

-------------写入文件---------------------

end sub
40006错误是端口被占用,主要是连接的问题,把代码粘全了, 要不怎么帮你解决问题啊
xiaoyuanzhi 2004-10-26
  • 打赏
  • 举报
回复
不会是协议错了吧?
zhixin1007 2004-10-05
  • 打赏
  • 举报
回复
sinom(毛毛.小狮子>>苦学ORACLE) 不要胡说八道好吗
peekdata 和 getdata 的区别在于是否清空患存,例如第一次传来1,第二次传来2,如果getdata的话得到1,2,peekdata则得到1,12....
mbqbaisha 2004-10-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView1.asp?id=3425766
相关问题.
有答案给我一个好吗?
zyg0 2004-09-10
  • 打赏
  • 举报
回复
贴代码
LichKingSZ 2004-09-10
  • 打赏
  • 举报
回复
winsock.peekdata
LichKingSZ 2004-09-10
  • 打赏
  • 举报
回复
WinSock控件接受数据有两种方式,即Winsock.GetData和Winsock.PeekData,当传送的数据大于8192字节时,要采用
tztz520 2004-09-10
  • 打赏
  • 举报
回复

我从来不用WINSOCK做下载.
你可以做一个用户控件,里面有下载的属性,挺好用的.
dhzsir 2004-09-10
  • 打赏
  • 举报
回复
首先谢谢楼上的兄弟们,
我用了上面所说的方法还是不行

我现在使用变通方法,我写了个断点继传函数,当程序报错时,我自动去检测已经下载了多少.
然后根据文件大小.再继续断点连接下载.

但上面报错我实在是搞不清楚.

代码很简单.连接省略.接收数据如下:
winsock_dataarrival(byval bytestotal as long)

winsock.getdata data,vbstring

-------------写入文件---------------------

end sub


1,502

社区成员

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

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