当使用经验证仅包含Socket对象的列表调用Socket.Select时,我有时会收到错误An operation was attempted on something that is not a socket
。我找不到发生的模式。
Socket.Select(readList, writeList, null, timeOut > 0 ? timeOut : 0);
答案 0 :(得分:8)
事实证明插座已关闭。这只是因为关闭套接字而导致.NET产生的一个非常愚蠢的错误。
答案 1 :(得分:2)
我在MSDN上进行了搜索并获得了几次点击。见here& here
但是,我没有在WinSock中开发任何东西,但是在Unix上实现Select
的方式需要在每次fd_set
返回时重置Select
。也许同样适用于Select的WinSock实现。如果是这种情况,readList, writeList
可能在Select
返回后导致已损坏导致您提到的错误。只是一个想法。
答案 2 :(得分:0)
我的主机防火墙打开时遇到此问题。 由于公司规定,我无法添加禁用我的防火墙。 所以我已经在我的主机中添加了入站规则以进行通信,之后它工作正常。
答案 3 :(得分:-1)
重启MYSQL服务可能会对您有所帮助。