我正在使用Socket.BeginReceive
方法異步接收數據。如果將size參數(要接收的字節數)設置爲int最大值(2,147,483,647)並將字節數組的大小設置爲2,147,483,647,會發生什麼? 這是如何影響性能的?如果我將接收的字節數設置爲2,147,483,647?
0
A
回答
1
那麼,根據
https://msdn.microsoft.com/en-us/library/dxkwh6zw(v=vs.110).aspx
Socket.BeginReceive
寫入到buffer
,因此size
必須等於或小於比buffer.Length
否則,你將有ArgumentOutOfRangeException
拋出:
ArgumentOutOfRangeException
偏移量小於0.
- 或 - 偏移量大於緩衝區的長度。
- 或 - 尺寸小於0
- 或 -
大小大於緩衝器的長度減去所述偏移參數的值越大。
所以,你必須分配一個巨大(2 GB
)陣列
byte[] buffer = new byte[2147483647];
所以,如果你的工作64位.NET並有足夠的內存,你」幸運的;否則你會有OutOfMemoryException
拋出。
結論:你將有可怕內存開銷(2 GB
每個連接)和可以忽略不計的性能增益。不要這樣做,請將size
設置爲合理的值。
相關問題
- 1. 如何接收字節數
- 2. 如何將int設置爲字節* C#
- 3. 將從jquery接收到的文件轉換爲字節數組
- 4. 如何從藍牙接收字節數組並將字節數組保存爲SD卡作爲映像文件
- 5. 如何設置getLine只接收可以轉換爲數字的字符串?
- 6. 如何找出套接字的傳輸/接收字節數
- 7. 套接字接收設置超時
- 8. Scala玩WS.put數組[字節]負數字節設置爲0b111111
- 9. 如果將CameraPreview的可見性設置爲GONE,我可以節省電池嗎?
- 10. 如果字節是8位整數,那麼我們如何將它設置爲255?
- 11. 如果我設置爲導航趕不上點擊收聽
- 12. 如何將我的應用程序設置爲默認接收SMS
- 13. 套接字接收正確的字節,字節翻譯爲空字符串
- 14. RandomAccessFile:將所有項目設置爲相同的字節數?
- 15. Jena將結果設置爲字符串
- 16. 如何將接收到的字節轉換回字符串?
- 17. StackOverflow導入錯誤:超過2,147,483,647字節的LOB?
- 18. 設置爲接收多播數據包的IPv6 UDP套接字是否也能夠接收單播數據包?
- 19. 發送的字節數多於我應該通過套接字接收到的字節數
- 20. 字節數組:如何確切知道接收到的字節數
- 21. Rails - 如何在選擇字段中將數字收集設置爲DESC?
- 22. 在.NET中將套接字發送/接收超時設置爲小於500ms
- 23. 如何在廣播接收器的接收方法中將數據設置爲文本視圖
- 24. 爲什麼我無法將此數字設置爲整數?
- 25. 從給定的數字中,將var設置爲-1,如果設置爲負數,則設置爲1(如果不使用if)
- 26. recv函數不接收所有字節
- 27. SCardTrasmit返回空接收字節數組
- 28. 將從Web服務接收到的字節數組轉換爲IOS中的PDF
- 29. 將設置關係設爲零直接持續的結果
- 30. 將jtextfield設置爲數據庫結果
爲什麼不試一試,找出答案。 – stuartd
我希望你能有一個連接 –
因爲只有連接了很多客戶端時纔會顯示效果,如果我這樣做,客戶端程序會影響我的電腦速度。 – None