【发布时间】:2015-02-10 19:09:45
【问题描述】:
我以前从未真正使用过 COM 套接字,现在有一些代码正在侦听相当稳定的数据流 (500Kb/s - 2000Kb/s)。
我尝试了不同的尺寸,但我不确定我在概念上在做什么。
byte[] m_SocketBuffer = new byte[4048];
//vs
byte[] m_SocketBuffer = new byte[8096];
我使用的套接字是 System.Net.Sockets.Socket,这是我的构造函数:
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
我的问题是:
- 大缓冲区和小缓冲区是否存在一般性权衡?
- 如何确定缓冲区的大小?您应该使用什么作为量规?
我正在检索这样的数据:
string socketData = Encoding.ASCII.GetString(m_SocketBuffer, 0, iReceivedBytes)
while (sData.Length > 0)
{ //do stuff }
- 当缓冲区已满时是否会发生读取事件?就像每当套接字缓冲区达到阈值时,我就可以从中读取?
【问题讨论】:
-
关于近距离投票,我真的不明白“如何调整缓冲区大小?”的问题。和“当缓冲区已满时,我的阅读事件会发生吗?”过于基于意见。这对我来说似乎很经验。
标签: c# sockets c#-4.0 tcp buffer