Windows Server 2003上的SocketException

时间:2009-01-29 15:53:55

标签: vb.net sockets windows-server-2003

我正在尝试在Windows Server 2003上启动并运行FTP应用程序,然后此应用程序在Windows XP专业版上运行,没有任何问题。我试过谷歌搜索答案,但我似乎在微软的网站上找到的唯一“解决方法”没有纠正问题(编辑注册表并添加值为1的新字段DisableRawSecurity(在正确的区域)我正在VB .Net中调试这个应用程序

异常:尝试以其访问权限禁止的方式访问套接字。 正如这里所要求的那样是它遇到问题的子源代码:

Private Sub Listen()
        Try

            ListenerSocket.Bind(LocalEndPoint)
            ListenerSocket.Listen(100)
            While True 
            ListenerSocket.BeginAccept(New AsyncCallback(AddressOf AcceptCallback), ListenerSocket)
            End While
        Catch ex As System.Exception
            Stop
        End Try
        ListenerSocket.Shutdown(SocketShutdown.Both)
    End Sub

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可能遇到问题,因为对BeginAccept的调用处于无限循环中。您应该只调用一次,直到AsyncCallback被命中,然后再次调用EndAccept和BeginAccept。所以基本上你只需要调用BeginAccept一次,然后在建立每个连接后再调用一次。

答案 1 :(得分:0)

Windows中的所有内容都有一个访问控制列表(ACL)。对我来说,运行您的应用程序的用户没有ACL中的适当权限来执行您要求它执行的操作。我不确定如何为原始套接字找到ACL,但这就是我要开始寻找的地方。

答案 2 :(得分:0)

您是否在应用程序中使用Raw套接字?如果没有,则该KB文章不适用,并且您的例外是由于其他原因造成的。