C# 在Linux/Mono中创建Alchemy WebSocket时拒绝访问

C# 在Linux/Mono中创建Alchemy WebSocket时拒绝访问,c#,linux,sockets,mono,C#,Linux,Sockets,Mono,我的问题实际上和你的完全一样,但似乎这个问题从来没有得到正确的回答,所以我还是被卡住了 我有一个使用Alchemy WebSockets编写的服务器。我让它在Windows上工作得很好,但在将它移植到Linux之后,我无法让它工作。每次尝试启动套接字服务器时,都会出现以下错误: System.Net.Sockets.SocketException: Access denied at System.Net.Sockets.Socket.Bind (System.Net.EndPoint loc

我的问题实际上和你的完全一样,但似乎这个问题从来没有得到正确的回答,所以我还是被卡住了

我有一个使用Alchemy WebSockets编写的服务器。我让它在Windows上工作得很好,但在将它移植到Linux之后,我无法让它工作。每次尝试启动套接字服务器时,都会出现以下错误:

System.Net.Sockets.SocketException: Access denied
  at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) [0x00051] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/Socket.cs:1104
  at System.Net.Sockets.TcpListener.Start (Int32 backlog) [0x00022] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/TcpListener.cs:268
  at System.Net.Sockets.TcpListener.Start () [0x00000] in /build/src/mono-2.10.8/mcs/class/System/System.Net.Sockets/TcpListener.cs:243
  at Alchemy.TcpServer.Listen (System.Object state) [0x00000] in <filename unknown>:0

“12345”被传递为“端口”,而“192.168.0.11”(我的本地IP)被传递为“主机”。我也尝试过IPAddress。任何都没有用。

这完全是权限问题

如果我用sudo运行我的程序,它将绑定到套接字,但这显然不是一个理想的情况

在上一篇关于Stackoverflow的文章中,这个问题已经被提出了。

我会尝试将“用户”添加到sudo的组中,作为一个快速解决方案进行补救。如果它使用ICMP或原始套接字,则必须作为根目录运行,以供参考。再次检查Alchemy是否没有使用此功能,如果是,您在没有超级用户权限的情况下运行它会有点运气不佳

我试图将此作为评论发布,但它不允许我这样做,这不是一个真实的答案。


仅供所有投票人参考。

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

您确定该端口上没有其他内容吗?试试sudo netstat-anpt | grep 12345Yes。如果您可以使用
System.Net.Sockets.TcpListener
使一个独立的程序工作,那么该命令将不返回任何内容。我刚刚在一个全新的项目中对其进行了测试。如果我在同一个套接字上创建一个TcpListener并启动它,则不会引发异常。在同一个项目中,我尝试创建一个WebSocketServer并启动它,它抛出了相同的套接字异常。这似乎表明问题在于炼金术。我找不到任何迹象表明Alchemy在Linux上不能正常工作,所以我不确定问题是什么……我想知道Alchemy是否以某种方式设置了安全上下文。看见
    static public void Start(int port, string host)
    {
        _server = new WebSocketServer(port, IPAddress.Parse(host));
        _server.OnConnect = OnConnected;
        _server.OnDisconnect = OnDisconnect;
        _server.Start();
    }