簡體   English   中英

通過tcpListener發送編碼為Byte數組的字符串,新的字符串長度與緩沖區大小相同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM