0

Thrift をセットアップして、2 つのエンティティと対応するサービスを構築しました。C# 用のコードを生成し、サーバー用の小さなコンソール アプリケーションと、テスト クライアント用の別のコンソール アプリケーションを作成しました。私はローカルマシンで両方を実行しましたが、それは魅力的に機能しました。しかし、Windows Server 2012 を実行している Azure VM にサーバーをデプロイし、エンドポイントを TCP のポート 9090 に作成すると、クライアントが接続できません。タイムアウトがあります。

SO に関する同様の質問:これは php ライブラリ固有の問題に関するもので、これは 2 台の Linux マシンに関するものです。後者は私の質問に近いですが、私の問題は Windows または Azure VM 固有のものであると想像できます。

NuGet の Thrift 0.9.0.0 を使用しています。SimpleServer と ThreadPoolServer を試しました。これは私がサーバー上でやっていることです:

Thrift.Server.TServer server = new Thrift.Server.TThreadPoolServer(new TodoThriftService.Processor(new TodoThriftServiceHandler()), new TServerSocket(9090));

これは私がクライアントでやっていることです:

TodoThriftService.Client client = new TodoThriftService.Client(new TBinaryProtocol(new TSocket("my.host.com", 9090)));

ホスト名の代わりにサーバーのIPアドレスも試しましたが、どちらも機能しませんでした.

netstat -出力は次のとおりです。

TCP    0.0.0.0:9090           0.0.0.0:0              LISTENING

クライアントからの telnet からの出力 (telnet my.host.com 9090):

Verbindungsaufbau zu my.host.com...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 9090: Verbindungsfehler

「接続エラー」のドイツ語です。

サーバーでhttp://canyouseeme.org/にアクセスし、ポート 9090 を確認すると、出力は次のようになります。

Error: I could not see your service on 123.34.567.890 on port (9090). Reason: Connection timed out

サーバーで Wireshark を使用してパケットをスニッフィングすると、出力は次のようになります。

1   0.000000000 12.3.456.78 12.34.567.89    TCP 66  53566 > websm [SYN] Seq=0 Win=8192 Len=0 MSS=1452 WS=256 SACK_PERM=1

しかも再送2回。

注: Wireshark に表示される宛先 IP は、canyouseeme.org が決定した IP とは異なります。

また、注意: 私のテスト クライアントと canyouseeme.org からの両方の接続試行が Wireshark に表示されます。

サーバー コンソール アプリケーションで何か問題が発生していますか? 私のローカルマシンでは問題なく動作します。

4

1 に答える 1