在Windows Server 2003上的SocketException
问题描述:
我想在Windows Server 2003上运行一个FTP应用程序并运行之前,这个应用程序在Windows XP专业版上运行时没有问题。我试着用Google搜索答案,但唯一的“解决方法”我似乎可以在微软的网站上找到并不能解决问题(正在编辑注册表并添加一个值为1的新字段DisableRawSecurity(在正确的区域中) 。我在VB中调试这个应用程序.Net在Windows Server 2003上的SocketException
例外情况:试图以禁止其访问权限的方式访问套接字 按照这里要求的是它的问题的子代码:
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
任何帮助将在Windows理解
答
一切。有一个访问控制列表(ACL)。在我看来,运行应用程序的用户在ACL中没有适当的权限来执行您要求的操作。我不知道你将如何去寻找一个原始套接字的ACL,但那是我开始寻找的地方。
答
您可能会遇到问题,因为对BeginAccept的调用处于无限循环。您应该只调用一次,直到AsyncCallback被打中,然后再次调用EndAccept和BeginAccept。所以基本上你只需要调用BeginAccept一次,然后在每次连接建立之后再次调用BeginAccept。
答
你甚至在应用程序中使用Raw套接字吗?如果没有,那么该知识库文章不适用,并且您的例外是由于其他原因。
我们可以看到一些源代码来帮助调试吗? – 2009-01-29 15:55:46