2009-04-05 9 views
0

私はリモートサーバーとクライアントを構築しました。サーバーは、次のような設定されている:リモート接続によるTCP

BinaryServerFormatterSinkProvider serverProv = 
    new BinaryServerFormatterSinkProvider(); 
serverProv.TypeFilterLevel = TypeFilterLevel.Full; 
BinaryClientFormatterSinkProvider clientProv = 
    new BinaryClientFormatterSinkProvider(); 

IDictionary props = new Hashtable(); 
props["port"] = port; 

TcpChannel channel = new TcpChannel(props, clientProv, serverProv); 

ChannelServices.RegisterChannel(channel, false); 

RemotingConfiguration.RegisterWellKnownServiceType(typeof(Controller), 
    "Controller", WellKnownObjectMode.Singleton); 

クライアントがように設定されています

ChannelServices.RegisterChannel(new TcpChannel(0), false); 
m_Controller = (Controller)RemotingServices.Connect(typeof(Controller), 
     "tcp://" + ip + ":2594/Controller"); 

私は、ローカルホスト」として指定されたIPと同じコンピュータからサーバーに接続しようとすると、それは結構です。私は、リモートコンピュータからではなく、LAN上で接続しようとするただし、サーバーのIPアドレスを与え、私は長い待ち時間の後に、クライアント上で次の例外を受け取る:

A connection attempt failed because the connected party did not properly 
respond after a period of time 

は、どのように私はこの問題を解決することができますか?ポートがサーバー上で正しく転送され、ファイアウォールがアクティブでないため、構成上の問題であると確信しています。

ありがとうございます。

+0

前にこの質問をしています表示されます:私はこのすべてをチェックしましたし、それが正常に見えるhttp://stackoverflow.com/questions/719425/remoting-objects-and-remote-connections –

答えて

0

これはサーバーがアクティブ化しなかったようです。 localhostを使用する場合、どのようにサーバーを起動しましたか?リモートIPアドレスを使って同じことをしましたか?

0

コマンドプロンプト(cmd.exe)から、サーバー側でnetstat -aを実行し、LISTENING行だけを調べます。ローカルアドレスが127.0.0.1として示されている場合、それはあなたのサーバーアプリケーションのみをリッスンしている意味

>netstat -a 
... 
Proto Local Address   Foreign Address  State 
TCP 0.0.0.0:135   Blah:0    LISTENING 
TCP 127.0.0.1:136   Blah:0    LISTENING 

:サーバがローカルアドレス欄のコロンの後に数として実行されているポートを示す1があるはずですループバックアダプタ。このアダプタは、ローカルマシンからの接続だけを自分自身(したがって名前)に戻し、そのようなポートへのリモート接続が受け入れられないようにします。 'localhost'という名前は127.0.0.1の名前であることに注意してください。だからどこに指定していれば、これは説明かもしれません。 (上の例の136はリスニングループバックソケットを示しています)

ローカルアドレスが0.0.0.0と表示されている場合は、サーバーアプリケーションがすべてのアダプタをリッスンしていることを意味します持っている)リモート接続が受け入れられます。 (上記の例では135)

ローカルアドレスが別のIPアドレスである場合の最後のケースでは、サーバーアプリケーションが特定のネットワークアダプターをリッスンしています。アダプタが複数ある場合は、間違ったものを聴いている可能性があります。

これまで述べてきたように、私は投稿したコードを使って小さなアプリケーションを作成しています。デフォルトでは0.0.0.0(すべてのアダプタ)でリッスンするように見えます。 0.0.0.0が表示されたら、私の次の呼び出しポートは、組織内にいる場合は、ローカルと企業の両方のクライアントとサーバーのファイアウォールを調べることです。

リモートマシンへのコンソールアクセスがある場合は、そのポートのローカルマシンにtelnet接続して、実際に接続をリスンするかどうかを確認できます。私はまた、問題がアプリケーションやインフラストラクチャにあるかどうかを調べるために、Netcatなどの単純なTCPリスナーをサーバー上で置き換えることにも誘惑されます。

+0

。クライアントはポート上でtelnetで接続できます。リモート設定の問題でなければなりませんが、私はそれを見つけることはできません。 –

0

この質問はヶ月ですが、どれもあまり:

サーバー上のトラフィックをスニッフィング(および好ましくは、クライアントだけでなく上で)あなたに何が起こっているかについてのより多くの洞察力を与える必要があります。

仕事のために、Windows用の非常にやさしいパケットスニファであるPacketyzerをお勧めします。

-1
+6

あなたの答えの下にリンクされたテキストを要約してください。そのリンクが壊れている場合は、この回答もあります。詳細については、[faq](http://stackoverflow.com/faq)を参照してください。 –