jjzjj

SocketAsyncEventArgs

全部标签

c# - SocketAsyncEventArgs ReceiveAsync 限制(未调用 arg.Complete)

我们有一个非常标准的SocketAsyncEventArgs的TCP实现(与您可以google的众多示例没有真正的区别)。我们有一个负载测试控制台应用程序(也使用SocketAsyncEventArgs),每秒发送x条消息。我们使用线程自旋在1000毫秒内引入最准确的间隔来发送消息(而不是尽可能快地发送x条消息,然后等待剩余的1000毫秒过去)。我们发送的消息大小大约为2k,服务器实现(在同一个套接字上)使用预先分配的HTTPOK200响应对其进行响应。我们希望能够使用SocketAsyncEventArgs每秒发送100条消息,如果不是1000条消息的话。我们发现通过简单的阻塞Tcp

c# - TCP 服务器在 SocketAsyncEventArgs 实例上重置 AcceptSocket.ReceiveAsync 操作

我目前有一个使用C#SAEA实现的TCP服务器。我想做的是在连接到服务器的2个TCP客户端(客户端1和客户端2)之间转发一条消息。服务器使用receiveSendEventArgs.AcceptSocket.ReceiveAsync和receiveSendEventArgs.AcceptSocket.SendAsync命令发送和从每个连接的客户端接收信息,无需问题。服务器在客户端1和客户端2的receiveSendEventArgs.AcceptSocket.ReceiveAsync操作中。客户端1发送一条消息,服务器接受该消息。服务器看到Client2也已连接,因此需要获取recei

.net - SocketAsyncEventArgs "pooled byte[]"样式是否有助于减少内存需求?

我看不到pooledSocketAsyncEventArgs样式帮助我减少了为许多并发连接提供服务的服务器的内存消耗。是的,它提供了MS的Begin/End样式的替代方案,上述MSDN页面将其描述为要求为每个异步套接字操作分配一个System.IAsyncResult对象。最初的研究让我相信,出于某种原因,它最多只能分配少数几个字节数组,并在我的数千个并发连接的客户端之间共享它们。但似乎如果我想在数千个客户端连接上等待数据,我必须调用ReceiveAsync数千次,每次都提供不同的字节数组(包装在SocketAsyncEventArgs中),然后,那数千个数组将一直坐在那里,直到客户端

c# - 使用 SocketAsyncEventArgs 时是否可以删除 ExecutionContext 和 Thread 分配?

如果您分析一个使用SocketAsyncEventArgs的简单客户端应用程序,您会注意到Thread和ExecutionContext分配。分配的来源是SocketAsyncEventArgs.StartOperationCommon,它使用ExecutionContext.CreateCopy()创建ExecutionContext的副本。ExecutionContext.SuppressFlow似乎是抑制此分配的好方法。但是,此方法本身会在新线程中运行时生成分配。如何避免这些分配? 最佳答案 SocketAsyncEventA
12