4

私の質問は、 mono/linux ソケットが拒否されたと実質的に同じですか? しかし、その質問に適切に答えられたようには見えないので、まだ行き詰まっています。

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

1024 を超えるポート (この場合は特に 12345) にバインドしようとしているので、それは問題ではありません。私は AppArmor や SELinux などを実行していません。システムでポートが使用されていません。問題がある場合、私のユーザーは「ネットワーク」グループのメンバーです。私のプログラムは、sudo で実行するとソケットにバインドされますが、明らかに理想的なケースではありません。

ソケットを作成してリッスンを開始するために使用するコードは次のとおりです。

    static public void Start(int port, string host)
    {
        _server = new WebSocketServer(port, IPAddress.Parse(host));
        _server.OnConnect = OnConnected;
        _server.OnDisconnect = OnDisconnect;
        _server.Start();
    }

「12345」は「ポート」として渡され、「192.168.0.11」(ローカル IP)は「ホスト」として渡されます。IPAddress.Any も試してみましたが、役に立ちませんでした。

4

2 に答える 2

6

Alchemy は 843 で Flash ポリシー ファイルをスローします。サーバーをインスタンス化するときに、flashsocketpolicy をオフにしてみてください。

于 2012-09-26T17:05:42.883 に答える
1

これは厳密には権限の問題です

私のプログラムは、sudo で実行するとソケットにバインドされますが、明らかに理想的なケースではありません。

この質問は、Stackoverflow に関する以前の投稿で既に尋ねられています。 mono/linux ソケットが拒否されましたか?

「ユーザー」をsudoのグループに追加して、迅速な解決策として修正してみます。ICMP または Raw ソケットを使用している場合は、root として実行する必要があります。Alchemy がこれを使用していないことを再確認してください。スーパー ユーザー権限なしで実行するのが少し運が悪い場合は。

これをコメントとして投稿しようとしましたが、できませんでした。これは真の答えではありません。

参考までに、反対票を投じたすべての人に。

于 2012-09-21T18:07:42.760 に答える