单声道/ linux套接字否认?

时间:2012-04-20 23:56:31

标签: linux sockets mono

我正在使用alchemy websockets并想出足够的东西在Windows上运行。我使用mono在linux(ubuntu)上构建了炼金术并运行了我的服务器。它收到套接字错误。端口> 1k(确切地说是端口8005)

Unhandled Exception: System.Net.Sockets.SocketException: Access denied
  at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00000] in <filename unknown>:0 
  at System.Net.Sockets.TcpListener.Start (Int32 backlog) [0x00000] in <filename unknown>:0 
  at System.Net.Sockets.TcpListener.Start () [0x00000] in <filename unknown>:0 
  at Alchemy.TcpServer.Listen (System.Object state) [0x00000] in <filename unknown>:0 

从文件名看起来我忘了使用调试信息构建或没有安装符号,但我确实成功构建单声道。它使用.NET 4.0 mono 2.10

为什么我在套接字上被拒绝访问?

3 个答案:

答案 0 :(得分:2)

要检查的一些事项

netstat -a | grep 8005看看是否有其他东西正在使用端口8005

以su身份运行以查看是否存在权限问题

sudo mono YourProgram.exe

我没看好您正在使用的库,但如果它使用ICMP或Raw Sockets,则必须以root身份运行。

要看的另一件事是查看您使用的DNS解析是否匹配。沙盒运行时通常只会抱怨这个,但我发现有些奇怪的事情发生了,你还没有给我们提供太多的信息。

如果是根本问题而不是另一个程序正在使用端口8005,那么您可以在单声道二进制文件上使用setcap,这样您就不必以root身份运行它。

以root身份运行: setcap cap_net_raw=iep /path/to/mono

答案 1 :(得分:0)

Access denied for Alchemy WebSocket creation in Linux/Mono

回答
  

Alchemy在843处抛出一个Flash Policy文件 - 尝试在实例化服务器时关闭flashsocketpolicy。

答案 2 :(得分:0)

将功能设置为单声道二进制文件。

sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/mono-sgen