Vb.net Websocket VB服务器大数据发送

Vb.net Websocket VB服务器大数据发送,vb.net,websocket,Vb.net,Websocket,Iam使用SendMessage向客户端发送数据。如果字节长度大于125,则此子节点不工作。如果字节长度小于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

Iam使用SendMessage向客户端发送数据。如果字节长度大于125,则此子节点不工作。如果字节长度小于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知之甚少,但对WebSocket知之甚少

138字节完整消息的帧头应为4字节:

0 - 129
1 - 126
2 - 0
3 - 138
检查您的代码是否生成该标头

我开发了一个,在GitHub中查看源代码,它可能会解决您的一些问题。更不用说你也可以从VB中使用这个库了

干杯