2017-11-06 8 views
2

私はクライアントとサーバーの両方からメッセージを送信できるサーバー側とクライアント側の両方のプログラムを作成しました。ローカルで動作します。クライアント端末./client "message"messageがサーバ端末に表示されます。だからすべてうまく動作します。 OK、今私はそれを "オンライン"にしたい、つまり、私はvirtualboxでエミュレートされた2台のdebianマシン間でメッセージを送信したいということです。何をすべきか?私はそれが正しいものにIPアドレスを調整することが重要だと思います。 Atm私は、クライアントコードで127.0.0.1 LOCALHOSTを使用しています。クライアントでは、私はサーバーのIPを置く必要がありますか?つまり、サーバは静的IPを必要としますか?クライアントサーバーソケットCとの基本的な通信

+0

あなたの具体的な問題は何ですか? – Stargateur

答えて

1

サーバーIPを使用する必要があります。静的でない場合は変更できます。また、ポート番号と、接続の両端に開いているかどうかを考慮する必要があります。それ以外の場合、ネットワークはクライアントとの間で流れるトラフィックを停止します。あなたが必要な場合は、複数のマシン上でそれを使用して、あなたのことができますこの方法で静的IPが最高になりますが、あなたはまた、ユーザがコマンドでIPアドレスを入力することができ考えるかもしれません、例えば

./ client "message" -ip="192.168.0.1:25534"

彼らはそれを入力するだけでIPの変化に対応することができます。

+1

ヒントをありがとう、実際には私が意図したように動作します。あなたのヒントは、さらなる機能を開発するのに役立ちます。どうもありがとう! – ducajack

1

クライアントの変更:

設定可能なサーバーのIPとポート。これは、コマンドラインパラメータ、環境変数、または設定ファイルを使用して実行できます。ターゲットOSがMS Windowsの場合は、レジストリ設定を使用して実行することもできます。

サーバーの変更:あなたは、固定IPまたはINADDR_ANYのいずれかを指定する必要がありますアドレスへ

あなたはbindサーバソケット。 127.0.0.1にバインドすると、サーバーは同じマシンからの接続のみを受け入れます。 INADDR_ANYは、ソケットをサーバのすべてのIPアドレスにバインドします(複数の場合があります)。 また、ポート番号を設定可能にする必要があります。

+0

別のネットからサーバ仮想マシンにアクセスするにはどうすればいいですか?サーバのIPは '10.0.2.20'ですが、私はvirtualbox Nat Networkと考えています。どのIPをクライアントコードに書かなければならないのですか?どうすれば見つけることができますか? – ducajack

+0

@ducajack私はあなたの仮想マシンへのホストマシン上でIPトンネルを作ることができると思います。リモートクライアントは、IPアドレスを使用してホスト上のポートに接続し、トンネルはIPパケットを仮想サーバーに転送します。 –