2012-04-20 4 views
1

私はalchemy websocketsを使用していて、何かをWindowsで動かすのに十分なものを見つけました。私はモノを使ってlinux(ubuntu)にalchemyを作り、サーバを走らせました。それはソケットエラーを取得します。ポートは、私はシンボルをインストールデバッグ情報やdidntのでビルドするのを忘れたが、私は成功したモノの上に構築したように見えるファイル名からモノ/ linuxソケットが拒否されましたか?

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 

> 1K(正確にはポート8005)です。その使用している.NET 4.0モノ2.10

私はなぜソケットでアクセスを拒否されていますか?

+1

リスナーを構築する前後にコードを添付することをお勧めします。 –

+1

あなたのシステムでは、[AppArmor](http://wiki.ubuntu.com/AppArmor/)、[SELinux]などの[必須アクセス制御](http://en.wikipedia.org/wiki/Mandatory_access_control) (http://en.wikipedia.org/wiki/Security-Enhanced_Linux)、[TOMOYO](http://tomoyo.sourceforge.jp/index.html.en)、[SMACK](http:// schaufler- ca.com/)?これらのいずれかによって、プログラムがTCPソケットを開けないようにすることができます。 MAC拒否/拒否通知のようなメッセージについては、 'dmesg(1)'出力または '/ var/log/audit/audit.log'をチェックしてください。 – sarnold

+0

@sarnold:dmesgにAppArmorの言及があります。私はそれがあったことを理解していませんでした。 monodevelop/sudoで私のアプリを実行した後、私はサーバーを実行することができますが、クライアント(firefox + javascript)は正しく動作しません。それは私のサーバーに接続していることに気付いていないようです –

答えて

2

何か他のものは、それが権限の問題

sudo mono YourProgram.exe

だ場合、私はしませんでした見にsuとしてポート8005

実行]を使用しているかどうかを確認し

netstat -a | grep 8005をチェックアウトするいくつかのこと使用しているライブラリをよく見てください。ただし、ICMPまたはRawソケットを使用する場合は、rootとして実行する必要があります。

もう1つのことは、使用しているDNS解決が一致するかどうかを確認することです。サンドボックス化されたランタイムは通常、これについて不平を言っていますが、私は見知らぬ事が起きたことを知り、あなたは私たちに多くの情報を与えていません。

ルートに問題があり、別のプログラムがポート8005を使用していない場合は、モノバイナリでsetcapを使用して遠ざけることができるため、ルートとして実行する必要はありません。ルートとして

を実行し、この: setcap cap_net_raw=iep /path/to/mono

+0

ポート8005をバインドするcap_net_raw機能を持つmonoを実行する必要は本当にありません。 rawやICMPが何か異なることを必要とするかもしれないが、少なくともスタックトレースはTCPであることを示す良い指標である 'TcpServer'と' Listen'を表示しています。 – sarnold

+0

@sarnold私は100%同意します。しかし、情報がほとんど提供されていないので、私は壁に物を投げつけて何がついているかを見ています。 –

+0

+1。興味があれば私の質問に私のコメントを参照してください –

0

としてはAccess denied for Alchemy WebSocket creation in Linux/Mono

で答え錬金術は843でのFlashのポリシーファイルをアップスロー - サーバーをインスタンス化するときflashsocketpolicyをオフにしてみてください。

+0

私は正確に理解できません。私は、私のdebianウェブサーバにインストールされているフラッシュを持っていません(そのGUIにはウィンドウシステムがありません。シェルアクセスしかありません)。しかし、私は別の解決策を考えています。これはプロトタイププロジェクトのためのものでした –

+0

それはサーバー上でフラッシュを持つことについてではありません。サーバは、フラッシュクライアントが接続する必要があるXMLファイルを提供します(たとえば、フラッシュを使用してブラウザ経由でサーバに接続しようとした場合など)。 –

+0

ああ。私はちょうど真っ直ぐなjavascript(クライアント側)を使用していた。クライアントまたはサーバーにフラッシュが含まれていません –

関連する問題