Socket.Select返回错误“尝试对非套接字的操作”

时间:2010-07-06 16:52:38

标签: c# sockets networking

当使用经验证仅包含Socket对象的列表调用Socket.Select时,我有时会收到错误An operation was attempted on something that is not a socket。我找不到发生的模式。

Socket.Select(readList, writeList, null, timeOut > 0 ? timeOut : 0);

4 个答案:

答案 0 :(得分:8)

事实证明插座已关闭。这只是因为关闭套接字而导致.NET产生的一个非常愚蠢的错误。

答案 1 :(得分:2)

我在MSDN上进行了搜索并获得了几次点击。见here& here

但是,我没有在WinSock中开发任何东西,但是在Unix上实现Select的方式需要在每次fd_set返回时重置Select。也许同样适用于Select的WinSock实现。如果是这种情况,readList, writeList可能在Select返回后导致已损坏导致您提到的错误。只是一个想法。

答案 2 :(得分:0)

我的主机防火墙打开时遇到此问题。 由于公司规定,我无法添加禁用我的防火墙。 所以我已经在我的主机中添加了入站规则以进行通信,之后它工作正常。

答案 3 :(得分:-1)

重启MYSQL服务可能会对您有所帮助。