私の質問は、 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 も試してみましたが、役に立ちませんでした。