首页 新闻 搜索 专区 学院

SocketAsyncEventArgs如何实现同时发送接收?

0
悬赏园豆:50 [已解决问题] 解决于 2013-09-22 17:48

本人目前在做高并发的通讯服务器,使用了SocketAsyncEventArgs,参考了微软MSDN上的SocketAsyncEventArgs源码,但是他只是简单的在接收到数据之后将数据返回客户端,发送与接收使用同一个缓存,同一个SAEA对象,这样不符合我程序的逻辑:发送与接收逻辑上分离。在我的程序里报异常
请问各位有什么方式解决这个问题?
谢谢!!!

Raysonxin的主页 Raysonxin | 初学一级 | 园豆:13
提问于:2013-09-17 17:41
< >
分享
最佳答案
2

没看明白你遇到的问题到底是啥,你是对一个SocketAsyncEventArgs进行了同时发送和接收吗?

SocketAsyncEventArgs封装了缓冲区的,是不能被同时使用的,要不然内存中的数据不乱了嘛。可以尝试封装一个SocketAsyncEventArgs对象池,使用的时候从对象池中申请,使用完后放回对象池,尽量复用它而减小GC压力,而不是同时使用。

收获园豆:50
天方 | 大侠五级 |园豆:5266 | 2013-09-18 20:49

对的,我现在是用了两个SAEA,解决了这个问题。想追问一下,为什么我在运行中(开始接收数据后)修改SAEA的UserToken不起作用呢?

Raysonxin | 园豆:13 (初学一级) | 2013-09-22 01:51

原来是客户端的问题,不好意思,谢谢拉!

Raysonxin | 园豆:13 (初学一级) | 2013-09-22 17:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册