2011-01-02 10 views
3

私はクライアントサーバーアプリケーションのJava

ServerSocket ServerSock=new ServerSocket(9000); 

、サーバ・アプリケーションが特定のポートでのServerSocketを作ることを学んだと、クライアントがサーバーアプリケーションへのソケット接続を行い、

Socket sock=new Socket("127.0.0.1","9000"); 

ので、クライアントはIpのを知っていますサーバーのアドレスとポート、私は混乱しているときにどのようにサーバーがクライアントについての知識を取得します。助けてください。

事前に太もも!!!

答えて

6

サーバーは、クライアントからの着信接続を「リッスン」しています。ポート番号がドア番号であると想像してください。サーバーはゲストのためにそのドアを待っています。

サーバーアプリケーションがserverSock.accept()を実行すると、実際にはブロックされ、クライアントが到着するのを待ちます。

クライアントが接続しようとすると、accept()メソッドは自身のブロックを解除し、別のSocketインスタンスを返します。今回はクライアントを表します。

この新しいSocketインスタンスを使用すると、クライアントが誰であるかを知ることができます。サーバーのアプリケーションコードの例のようになります。

たくさんありがとう
ServerSocket serverSock=new ServerSocket(9000); 

Socket clientSock = serverSock.accept(); //this will wait for a client 

System.out.println("Yay we have a guest! He's coming from " + clientSock.getInetAddress()); 
+0

、あなたの助けを借りて、今ではよく私のためにクリアされます... :-) –

+2

@pavithra - 現実には、おそらく複数の要求を満たす必要があります接続。したがって、accept()を含む行をループに入れ、新しいクライアントが来るたびに新しいスレッドを作成して、サーバが別のクライアントを待っている間にクライアントを別々に処理するようにする必要があります。 – jbx

2

サーバーはServerSock.accept()でクライアントを受け入れます。 Hereはチュートリアルです。

0

まあ、クライアントは、接続するサーバーのIPとポートを知っています。
クライアントは、サーバーに接続しようとします。
これは、サーバーの(サーバーがリスンして接続を受け入れることを試みている)マシンのTCP層によって要求接続が受け入れられた場合、クライアントソケットがサーバーで使用可能になるように、クライアントプロセスにエファメラルポートが割り当てられるようになりますクライアントのIPとポートを使用します。
これで、サーバーはクライアントにアクセスする方法を知らせます。

関連する問題