Winsock多客户端 服务端接收的问题
'****接收
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Getpic() As Byte
ReDim Getpic(1 To bytesTotal)
Winsock1(Index).GetData Getpic, vbByte
End Sub
这个多客户端服务端的一个接收部分
有一个问题问一下
因为是多客服端连接。那么同时2个或者3个客户端连接。index 为0 1 2
那么Getpic字节数组就可能会交叉使用。会出现这种问题吗?
打个比方。Index0刚接收了30%的数据。被上来的Index1直接也Getda一下。那不是这个量又变了。
- -有没有二维字节数组。zz(y)(x)
如果是字符的话我只要多定义几个字符串。如
Dim Getpic(65500) As String
Winsock1(Index).GetData Getpic(index) '//
字符还可以这样存放。- -高人来解答一下。
还有一个问题。局域网我测试了一下。一个大的图片只能穿前边几十块。因为不是从文件读取来操作。
是直接从控件中取出赋值给字节。因为太大。怎么把字节给分割掉。8Kb以下
比如Getpic大于1000KB的。
可不可以直接分割掉字节数组。for一下分次发送。不要再存放在文件里边。
[解决办法]
关注中
[解决办法]
那么Getpic字节数组就可能会交叉使用。会出现这种问题吗?
不会,应该在各自的缓冲区内,等待处理。
- -有没有二维字节数组。zz(y)(x)
dim zz() as byte
redim zz(5,500)
怎么把字节给分割掉。8Kb以下
再定义一个8K的字节数组,用循环把大数组分几次赋值给这个8K的数组,分几次发送这个8K的数组,第组之间注意延时处理,接收端再组装在一起。
[解决办法]
如果你的缓存数据不加处理,直接接受下一个用户的数据,当然会覆盖。但是,你有不处理的理由吗?
例如,你可以为每一个用户开一个临时的二进制磁盘文件,随时将数据缓存进去。
[解决办法]
每个socket接收到的数据存到每个缓存中,就不会出现重复的问题,客户端发送数据如果超过最大发送量会自动拆帧,所以你服务端最好要有拼帧处理,当日如果发送数据量很小就不要考虑这个了