还是问下winsock的小问题,谢谢

1111111 2006-03-22 11:00:16
WinS.SendData bytData
客户端,一到这里,就出问题.40006错误,所需事物或请求的错误协议或连接状态.如果再继续执行一下,就可以了.连接状态,我写了检查的代码SWinsock1.State如果没关,就关闭.不知道怎样解决?请高人指点.

这段代码是在sock服务端的DataArrival内写的.
Dim bytData() As Byte
Dim i As Long
Dim f
f = FreeFile
Dim strFileName As String
strFileName = "D:\c.zip"

Open strFileName For Binary As #f
ReDim bytData(1 To bytesTotal)
SWinsock1.GetData bytData
Put #f, i, bytData'这个i到底定义成什么类型???????????????????????
i = i + bytesTotal '保证每次写都是在文件的末尾, i是个全局变量
Close #f
怎样知道i的大小呢?

谢谢了,感激不尽~``
...全文
151 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZOU_SEAFARER 2006-03-22
  • 打赏
  • 举报
回复
If SWinsock1.State = 7 then
WinS.SendData bytData
end if
在WinS.SendData bytData前如果要保证没有错误的话,先判断是否连接
homezj 2006-03-22
  • 打赏
  • 举报
回复
客户端WinS.SendData bytData必须在Connect事件发生之后才可以使用,你可能是紧跟着WinS.Connect之后就开始SendData了吧?
1111111 2006-03-22
  • 打赏
  • 举报
回复
Private Sub SWinsock1_ConnectionRequest(ByVal requestID As Long)
If SWinsock1.State <> sckClosed Then
SWinsock1.Close
End If
SWinsock1.Accept requestID
End Sub

这不,已经写好了.还是有问题
就是客户端WinS.SendData bytData得时候出错,那个40006得错误,然后不关,按调试,再运行,这个错误就没有,成功得连接上了.
文件也传过去了~~
韧恒 2006-03-22
  • 打赏
  • 举报
回复
同意 jobs002(赏花赏月赏春光)
ZOU_SEAFARER 2006-03-22
  • 打赏
  • 举报
回复
i 应该是全局变量
ZOU_SEAFARER 2006-03-22
  • 打赏
  • 举报
回复
ReDim bytData(1 To bytesTotal)
SWinsock1.GetData bytData
Put #f, i, bytData '这个i应该是long ,从i位开始写入,写入bytesTotal个字节
i = i + bytesTotal '定位写入数组,保证文件连续,下一次写入地方为i
Close #f
i的初始化为1,一般在爱load事件里面就i = 1
yoyo9250 2006-03-22
  • 打赏
  • 举报
回复
40006错误是没连接上啊
jobs002 2006-03-22
  • 打赏
  • 举报
回复
if wsServer.state<>sckclosed then wsServer.close
call winsock.accept(requestID)
end if
ZOU_SEAFARER 2006-03-22
  • 打赏
  • 举报
回复
在WinS.Connect后面稍微等待一会好不?等待网络真正建立了连接在发送数据
你在WinS.SendData bytData中断然后f8调试看看有什么问题没有?
1111111 2006-03-22
  • 打赏
  • 举报
回复
我晕~~~~~~~~~~~~~~~大家看看,不知道是不是bug,我winsock是sp6的.请比较下边2个代码
'If WinS.State <> sckClosed Then
'WinS.Close
'WinS.Connect
'WinS.SendData bytData '发送数据
'Else
'WinS.Connect
'WinS.SendData bytData
'End If
'----------------------------------------------------------
If WinS.State = sckClosed Then
WinS.Connect
WinS.SendData bytData
End If
没有注释的,就运行出错.而如果用注释内的代码来运行,则没有任何错误.这..........头一次经历这样的错误,无语!!!!!!!!!
1111111 2006-03-22
  • 打赏
  • 举报
回复
什么愿意造成了state是4,而不是7呢?我以前做的一个小程序,是client在文本框打字,server就能收到,或者相反.就没有问题.
怎样才能把4变成7的状态呢?
1111111 2006-03-22
  • 打赏
  • 举报
回复
朋友们,我看了一下state的值,是4,在connect以后.正确的应该是7吧?不知道怎么回事.

7,763

社区成员

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

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