我正在尝试在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
任何帮助将不胜感激。
答案 0 :(得分:1)
您可能遇到问题,因为对BeginAccept的调用处于无限循环中。您应该只调用一次,直到AsyncCallback被命中,然后再次调用EndAccept和BeginAccept。所以基本上你只需要调用BeginAccept一次,然后在建立每个连接后再调用一次。
答案 1 :(得分:0)
Windows中的所有内容都有一个访问控制列表(ACL)。对我来说,运行您的应用程序的用户没有ACL中的适当权限来执行您要求它执行的操作。我不确定如何为原始套接字找到ACL,但这就是我要开始寻找的地方。
答案 2 :(得分:0)
您是否在应用程序中使用Raw套接字?如果没有,则该KB文章不适用,并且您的例外是由于其他原因造成的。