【问题标题】:SocketException on Windows Server 2003Windows Server 2003 上的 SocketException
【发布时间】:2009-01-29 15:53:55
【问题描述】:

我正在尝试在 Windows Server 2003 上启动并运行一个 FTP 应用程序,在此应用程序在 Windows XP Professional 上运行之前没有问题。我曾尝试在谷歌上搜索答案,但我似乎在微软网站上找到的唯一“解决方法”并没有解决问题(正在编辑注册表并添加一个值为 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

任何帮助将不胜感激。

【问题讨论】:

  • 我们可以看看一些源代码来帮助调试吗?
  • 请提供更多源代码。 ListenerSocket 是如何声明的? LocalEndPoint 是如何声明的?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您甚至在您的应用程序中使用原始套接字吗?如果不是,则该知识库文章不适用,您的例外是由于其他原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 2013-12-21
        相关资源
        最近更新 更多