2017-02-02 40 views
0

我是套接字編程的新手。我在互聯網上找到了一些幫助。當發送一些數據時它使用網絡流功能。我很困惑爲什麼60000被從中減去。 我試圖刪除它,甚至改變它,但它會拋出一個異常「索引超出限制」。
我的問題是爲什麼60000從receivedBufferSize中減去? 請幫助套接字編程網絡流功能c#

NetworkStream networkStream = clientSocket.GetStream(); 
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize-60000); 
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom); 
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")); 
+1

'System.Text.Encoding.ASCII'不是C++;也許你的意思是C#,雖然你說C++兩次...... –

+0

沒有足夠的信息來確定地回答這個問題。 –

+1

你將不得不問作者,魔術數字是什麼。 – IInspectable

回答

0
  1. 你應該通過你的緩衝區的長度在第三個參數,例如bytesFrom.Length。值Socket.ReceiveBufferSize是操作系統中的內部套接字緩衝區大小。通常不需要讀取或更改此值。

  2. 您應該使用返回值Read函數 - 實際讀取的字節數,例如:System.Text.Encoding.ASCII.GetString(bytesFrom, 0, numRead);。請注意,接收操作可能會碎片化,您將需要多次讀取操作才能讀取該消息。