我对System.Net.Socket.BeginSend方法有疑问。
public IAsyncResult BeginSend(
IList<ArraySegment<byte>> buffers,
SocketFlags socketFlags,
AsyncCallback callback,
object state
)
如果在参数SocketFlags.None
中指明,会在被触发之前全部发送吗?socketFlags
buffers
callback
如果上述问题的答案是否定的:该
EndSend
方法只返回已发送缓冲区的字节。如何知道ArraySegment
发送了哪些s?我需要愚蠢地循环缓冲区以找到发送的缓冲区?是否有可能ArraySegment
发送一半?如果上述问题的答案是肯定的:它的大小是否有任何限制
buffers
?如果我buffers
一次发送 10MB 怎么办?
一般来说,我不明白 .NET 如何在ArraySegment
内部处理。发送前缓冲区会ArraySegment
合并成一个大缓冲区吗?