- ベストアンサー
ネットワークプログラミング サーバーと複数のクライアントの接続の仕方を教えてくださいm(_ _)m。
こんにちは。 サーバーと複数のクライアントの接続のプログラミング(java)を考えています。 サーバーをマルチスレッドに変えてクライアントも1つ1つ変えなくてはならないのか、どう変えていいのか分かりません。 ネットとか本でネットワークプログラミングについては調べてみたのですが、複数のクライアントの接続は応用みたいでなかなか参考になるのが見つかりませんでした。 サーバーと複数のクライアントの接続のプログラミング(java)の仕方を教えてください。また、参考になるホームページなどががあれば教えてください。 お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずは、前の質問の回答に関して、補足欄に質問内容をより詳細に記入するなり、はたまた新たに質問し直すにしても、どのようなネットワーク形態なのかなど、違った内容にすべきだとは思いますけども。 補足蘭やお礼欄の内容によっても、自分が回答・アドバイス出来る内容なのかどうかが判断できるわけですから。(誰も回答してくれない、ではなく単に保留中といったことも有り得るわけですよ。) とまあ、プラトンはさておきソクラテスは・・・、っと。 Webアプリ開発エンジニアのための技術情報サイト「テックスコア」 ネットワークプログラミング(java.net) http://www.techscore.com/tech/J2SE/Network/index.html JavaでもCなどと同じようにソケットプログラミングは可能です。ただ、質問者さんもおっしゃるようになかなかネットワーク系の情報が無い原因として、Sun Educational Servicesが、SJC-Pの出題範囲からjava.netパッケージを外したことが考えられます。これによって、5系から入った最近のJavaプログラマさんは、「データグラム通信」や「マルチキャスト」などはあまり知らないんじゃないかなと思います(仕事で必要でもない限り)。 逆に言うと、1.4系以前のこの辺りの知識に明るい方というのは、以前からJavaに精通されていた方といった感じですね。(ちなみに、私が最初にJDKをインストールした時のバージョンは1.3系です。) マルチスレッドに関しても、ネットワークによって各々異なってきます。質問者さんはTCPとUDPの違いについては大丈夫でしょうか?もし、コネクションレス型のUDPであれば、データグラム通信を用いることによりマルチスレッドにしなくても実現可能です。 はたまた、プロトコルがHTTPに限定されるのであれば(ここの「教えて!goo」のサイトみたいな感じ。)、サーブレットコンテナ(Tomcatなど)を利用するといった手もあります。したらば、低レベルの処理は全てコンテナがやってくれますので、JavaプログラマはサーブレットやJSPを使用することにより、ビジネスロジックやGUIに専念できます。
その他の回答 (3)
- iluv_nagai
- ベストアンサー率20% (1/5)
単にサーバ,クライアントの1対多ってことですか? 基礎的なことでしょうか. で,クライアントをどうさばくかがわからない?? 前に,処理を別のパソコンにさせたくて InetAddress getInetAddress() で,ソケット通信受けた際に相手のIPアドレスを確保させ, 処理終了後,ソケット作成時にそれを利用させて 結果を送り返させるってのをやりました… >クライアントも1つ1つ変えなくては の1文から判断しましたが,全然関係なかったらすいません
- _ranco_
- ベストアンサー率58% (126/214)
いちばんふつうのやり方は、ServerSocketのaccept()コールがクライアント接続のSocketを返すたびに、そのSocketをコンストラクタ引数として新たなスレッドオブジェクトを作り、そのスレッドがクライアントとのI/Oをすべて行います。通常この方法で同時に数千クライアントぐらいを扱えます。 同時アクセス数が何万クライアントという巨大なサーバでは、SocketChannelによるノンブロッキングI/Oを使います。
- Yanch
- ベストアンサー率50% (114/225)
http://oshiete1.goo.ne.jp/qa4478303.html と同じ質問内容のようですが、どうしたのかな?