附代码请教:Winsock接收数据提示:“下标越界。”的问题,解决不了。
小弟搞了2天还是不行。请各为大虾指教。感激!PS:WSHQWD 为winsock1 的名称Private Sub WSHQWD_DataArrival(ByVal bytesTotal As Long) Dim ConnetFlag As Byte
Dim ConnetByteWSHQWD() As Byte
Dim WSHQWDNum As Long
Dim WDStrArr() As String * 2
Dim WDDir As String
ReDim WDStrArr(0 To 4679) As String * 2
ReDim ConnetByteWSHQWD(0 To 4679) As ByteWDDir =App.Path & "\Data\123.txt"
If FlagSD = 0 Then
WSHQWD.GetData ConnetFlag
ComboCSSZ_Kh.ListIndex = CInt(ConnetFlag) - 1
Call ChangeNSPBS '改变效验位
WSHQWD.SendData CByte(52)
FlagSD = 1
ElseIf FlagSD = 1 Then
WSHQWD.GetData ConnetFlag
If ConnetFlag = CByte(52) Then
WSHQWD.SendData CByte(255)
FlagSD = 2
End If
ElseIf FlagSD = 2 Then
WSHQWD.GetData ConnetByteWSHQWD()
For WSHQWDNum = 0 To 4679 WDStrArr(WSHQWDNum) = ConnetByteWSHQWD(WSHQWDNum)在这里出现下标越界的提示!
Open WDDir For Random As #1 Len = Len(WDStrArr(WSHQWDNum))
Put #1, WSHQWDNum + 1, WDStrArr(WSHQWDNum)
Close #1 Next WSHQWDNum
WSHQWD.SendData CByte(255)
MsgBox "接收数据完成!", vbInformation, "提示:"
WSHQWD.Close
End IfEnd Sub
解决方案 »
- VB中有没有这样的函数,2007/1/5 转化成 2007/01/05,也就是说月份和日期都变成两位?
- winsock如何处理重定向
- 如何禁用WebBrowser活动脚本?
- 怎么注册商业activex组件
- 如何画出一个“固定资产系统”的流程图???急急,在线等
- 菜鸟求助:VB如何编写文本批量替换?
- 求救:如何在windows下实现和modem的串口(windows COM port)通信????
- 关于颜色渐变
- 程序中如何用简单的方式设置IE的首页?
- 用ADO访问局域网中另一台机上的ACCESS2000,一定要共享这个数据库,才能访问吗?有其他方法吗?
- VB如何使用代码删除ACCESS数据库中表中的数据?
- VB打开word问答老是提示 只读打开 怎么去掉这个提示,让它清爽的打开 谢谢
看那一个报错你就知道是那个数组有问题了,在具体分析
......
bytesTotal 取回来的是680,但是我在测试发过去的数据肯定是4680(即0-4679) BYTE
请问WINSCOk有限制??如果有,也不应该那么低吧。。680 一K都不到~~!呵呵
你好,老马,
bytesTotal 取回来的是680,但是我在测试发过去的数据肯定是4680(即0-4679) BYTE
请问如何解决这个问题可以一次接受4680 BYTES
老马,按照你的意思,我就郁闷了。。
请问难道WINSOCK 接收 不到半K的东西也不能一次接收完吗??
才4680 byte,它才收到680 BYTE。。难道它一次最大只能收到680 BYTE吗??
如果是这样,我若发10M过去不就得 1 2个小时??甚至不止??
那请问WINSOCK传送文件的时候怎么办???
用发包的协议?那它一次只能680BYTE。那我得发久阿??PS 我这边是上位机软件 连下面弹片机进行通信,是485串口接弹片机再通过一个小设备转TCPIP 连PC。是这样和下面弹片机进行通信、数据传输的。
还是WINSOCK 一次接收的总次数就是680? 所以不管是发STRING 还是 BYTE 都是最多680。
因为一次只能收680。所以它才收到680BYTE??
制用发包协议,来确定数据的完整性。如果这样可以做,但一次也只能收680BYTE,
如果有10M 我有得发多久??
回复于:2009-06-05 04:30:07
ReDim a(43) As Byte '去掉
让WINSOCK控件自己给你扩维.
每次收到的数据并不一定是你发多少收多少的.
你把每次的任何数据都收回来,然后再从中把有用的数据还原.
LZ在本贴中仍然犯同样的错误.
ReDim a(43) As Byte 也解决了这个问题。。
但是我想知道WINSOCK接收最大个数是多少??
这能给出答案吗??
但是,下面弹片机一次就发4680 BYTE过来。就发一次的话,
我得怎么收???每次发来的数据都不同?我又得怎么判断??是否是它的数据?
我最多只知道 4680 个BYTE。。
请指教。。谢谢!!