Websocket VB服务器大数据发送



我使用SendMessage向客户端发送数据。如果字节长度大于125,则此Sub不起作用。如果字节长度小于125,一切正常。例如字节长度为138的脚本不工作下面是代码;

Sub SendMessage(sck As Socket, message As String)
    Dim rawData = System.Text.Encoding.UTF8.GetBytes(message)
    Dim frameCount = 0
    Dim frame(10) As Byte
    frame(0) = CByte(129)
    Console.WriteLine("bukar:" & rawData.Length)
    If rawData.Length <= 125 Then
        frame(1) = CByte(rawData.Length + 1)
        frameCount = 2
    ElseIf rawData.Length >= 126 AndAlso rawData.Length <= 65535 Then
        frame(1) = CByte(126)
        Dim len = CByte(rawData.Length + 1)
        frame(2) = CByte(((len >> 8) & CByte(255)))
        frame(3) = CByte((len & CByte(255)))
        frameCount = 4
    Else
        frame(1) = CByte(127)
        Dim len = CByte(rawData.Length + 1)
        frame(2) = CByte(((len >> 56) & CByte(255)))
        frame(3) = CByte(((len >> 48) & CByte(255)))
        frame(4) = CByte(((len >> 40) & CByte(255)))
        frame(5) = CByte(((len >> 32) & CByte(255)))
        frame(6) = CByte(((len >> 24) & CByte(255)))
        frame(7) = CByte(((len >> 16) & CByte(255)))
        frame(8) = CByte(((len >> 8) & CByte(255)))
        frame(9) = CByte((len & CByte(255)))
        frameCount = 10
    End If
    Dim bLength = frameCount + rawData.Length
    ' Console.WriteLine(frameCount)
    'Console.WriteLine(rawData.Length)
    Dim reply(bLength) As Byte
    Dim bLim = 0
    For i = 0 To frameCount - 1
        '  Console.WriteLine(bLim)
        reply(bLim) = frame(i)
        bLim += 1
    Next
    For i = 0 To rawData.Length - 1
        '   Console.WriteLine(bLim)
        reply(bLim) = rawData(i)
        bLim += 1
    Next
    'For i = 0 To reply.Length - 1
    'Console.WriteLine("Byte: " & reply(i))
    'Console.WriteLine("Char: " & CByte(reply(i)))
    'Next
    sck.Send(reply, reply.Length, 0)
End Sub

我对VB了解不多,但对WebSockets了解一点。

一个138字节的完整消息的帧头应该是4字节:

0 - 129
1 - 126
2 - 0
3 - 138

检查你的代码是否产生了这个头。

我为。net/mono开发了一个WebSocket服务器连接器,检查GitHub中的源代码,它可能会解决你的一些问题。更不用说你也可以使用VB中的库了。

欢呼。

相关内容

  • 没有找到相关文章

最新更新