[英]Sending a string encoded as Byte array via tcpListener, new string length same like buffer size
我需要創建一個發送文本夾的小型應用程序。 因此,我使用tcpListener創建了服務器。 在我的客戶端上,我使用tcpClient。
現在我的問題是:
data = System.Text.Encoding.ASCII.GetBytes("test"); //length of "test" is 4.
現在,我將此字節數組發送到我的服務器應用程序。 我在這里創建了一個320000字節大小的緩沖區數組。 (大小真的不重要)
byte[] message = new byte[320000];
bytesRead = clientStream.Read(message, 0, 320000);
ASCIIEncoding encoder = new ASCIIEncoding();
string request = encoder.GetString (message);
這是我現在的問題,結果請求字符串的長度為320000。與我的字節數組相同。 我確實知道為什么會這樣,但是我該怎么做才能將尺寸減小到原始尺寸呢? 現在,我使用RegEx刪除了我將發送的字符串中永遠不會出現的所有字符...但是必須有一種適當的方式...
任何幫助將不勝感激 :)
拍。
嘗試更改:
string request = encoder.GetString(message);
至
string request = encoder.GetString(message, 0, bytesRead);
一種常見的做法是使用一些標識符,該標識符將永遠不會出現在字符串的其他任何地方以指示其結尾。
System.Text.Encoding.ASCII.GetBytes("test+++++++");
一切都會起作用,當您找到此序列時,您(string.indexof(“ +++++++”))只會返回最終結果的子字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.