本人目前在做高并发的通讯服务器,使用了SocketAsyncEventArgs,参考了微软MSDN上的SocketAsyncEventArgs源码,但是他只是简单的在接收到数据之后将数据返回客户端,发送与接收使用同一个缓存,同一个SAEA对象,这样不符合我程序的逻辑:发送与接收逻辑上分离。在我的程序里报异常
请问各位有什么方式解决这个问题?
谢谢!!!
没看明白你遇到的问题到底是啥,你是对一个SocketAsyncEventArgs进行了同时发送和接收吗?
SocketAsyncEventArgs封装了缓冲区的,是不能被同时使用的,要不然内存中的数据不乱了嘛。可以尝试封装一个SocketAsyncEventArgs对象池,使用的时候从对象池中申请,使用完后放回对象池,尽量复用它而减小GC压力,而不是同时使用。
对的,我现在是用了两个SAEA,解决了这个问题。想追问一下,为什么我在运行中(开始接收数据后)修改SAEA的UserToken不起作用呢?
原来是客户端的问题,不好意思,谢谢拉!