2011-02-26 71 views
0

出於某種原因,我不能將文本追加到我從tcpclient流獲取的數據中。將文本追加到來自tcpclient的字符串?

Dim Client As New TcpClient("server", port) 
Dim stream As NetworkStream = Client.GetStream() 
Dim receiveBytes As [Byte]() = New [Byte](Client.ReceiveBufferSize) {} 
Dim returnData As [String] = [String].Empty 
stream.Read(receiveBytes, 0, CInt(Client.ReceiveBufferSize)) 
returnData = Encoding.ASCII.GetString(receiveBytes) 
MsgBox(returnData + "hello") 

消息框將只包含沒有hello的returnData字符串。

回答

1

這是因爲你忽略了Stream.Read的返回值。您並不總是每次都會收到一個完整的緩衝區,而其他任何內容都將爲0.這意味着在returnData的末尾會有Unicode「空白」字符(0),並且Windows會將它們視爲字符串終止。

改變兩行剛結束之前:

Dim bytesRead = stream.Read(receiveBytes, 0, CInt(Client.ReceiveBufferSize)) 
Dim returnData = Encoding.ASCII.GetString(receiveBytes, 0, bytesRead) 

(這是在去除的returnData與先前的聲明 - 有沒有點在聲明一個變量,給它一個虛擬值,當你即將替換值)。

(請注意,這是真的假設數據是ASCII ...是,肯定?)

+0

是我送自己的數據爲ASCII。感謝您的迴應,完美工作。 – Shawn 2011-02-26 16:44:25