0

我正在通过网络发送一个字符串,每次我检查接收字符串的一方时,它总是告诉我接收到的字符串的长度是8193. 但是当我尝试在它显示在之前分配一个值时MsgBox,它会返回正确的值。我尝试使用String.Trim(Chr(10))*,修剪字符串String.Trim(Chr(13))String.Trim(ChrW(8193))但无济于事。

有人对此有任何想法吗?

这是我的接收方代码。

Private Sub ChatConnectionTimer_Tick(sender As Object, e As System.EventArgs) Handles ChatConnectionTimer.Tick

    Try
        Dim ConnectionStatus As String = String.Empty

        If CBool(chatClientSocket.Available) Then
            chatNetworkStream = chatClientSocket.GetStream()
            Dim ByteData(chatClientSocket.ReceiveBufferSize) As Byte
            chatNetworkStream.Read(ByteData, 0, CInt(chatClientSocket.ReceiveBufferSize))
            ConnectionStatus = Encoding.ASCII.GetString(ByteData)

            MsgBox(ConnectionStatus.Length()) 'This part always return 8193

            If ConnectionStatus.Contains("Server is disconnected.") Then
                DisconnectChat()
            End If
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
End Sub
4

1 回答 1

2

您的 ByteData 缓冲区始终是 ReceiveBufferSize 的大小。您要做的是检查 .Read 返回了多少,并将其用作返回消息的长度。

于 2013-01-22T18:00:39.157 回答