首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于SocketAsyncEventArgs的问题

关于SocketAsyncEventArgs的问题
EN

Stack Overflow用户
提问于 2011-05-04 07:43:55
回答 3查看 4.6K关注 0票数 0

我已经实现了一个异步套接字连接,并让它成功地与客户端通信。我目前遇到的问题是,当使用独立于定义的协议的计时器向客户端发送数据包时。

每次调用SAEA.AcceptSocket.SendAsync(...)时,我都会得到一个异常: System.InvalidOperationException:“使用这个SocketAsyncEventArgs实例的异步套接字操作已经在进行中。”

我做了一些测试,似乎不能一个接一个地调用SAEA.AcceptSocket.SendAsync(...)。这是SAEA设计的方式,还是我在代码中做错了导致异常被引发的错误?

我花了一些时间搜索这个,但似乎找不到任何答案。如果有人能帮助我,或至少指出我的正确方向,那将是非常感谢的!

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-04 08:36:25

每个SocketAsyncEventArgs实例只能有一个操作挂起。您要么需要等待当前挂起的操作完成,要么只需在每次发送时使用唯一的SocketAsyncEventArgs实例。

票数 2
EN

Stack Overflow用户

发布于 2011-05-04 08:15:12

每次发送消息时,它都会尝试发送或等待超时或错误。

发生在您身上的可能是您仍然在处理前面的消息,并且尝试使用相同的SocketAsyncEventArgs再次发送。如果SocketAsyncEventArgs正在等待下一个进程,通过请求它转到另一个进程,您将得到这个错误。

因此,如果侦听器是服务器,当客户端尝试发送时,我建议您执行一个新连接并为它创建一个新的SocketAsyncEventArgs。

票数 1
EN

Stack Overflow用户

发布于 2011-05-04 07:48:51

我想你得打电话给SAEA.AcceptSocket.EndAccept(.)首先结束异步连接进程或SAEA.AcceptSocket.EndSend(.)以结束上一次发送

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5880179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档