• ベストアンサー

ネットワークプログラミング サーバーと複数のクライアントの接続の仕方を教えてくださいm(_ _)m。

こんにちは。 サーバーと複数のクライアントの接続のプログラミング(java)を考えています。 サーバーをマルチスレッドに変えてクライアントも1つ1つ変えなくてはならないのか、どう変えていいのか分かりません。 ネットとか本でネットワークプログラミングについては調べてみたのですが、複数のクライアントの接続は応用みたいでなかなか参考になるのが見つかりませんでした。 サーバーと複数のクライアントの接続のプログラミング(java)の仕方を教えてください。また、参考になるホームページなどががあれば教えてください。 お願いします。

  • Java
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

とりあえずは、前の質問の回答に関して、補足欄に質問内容をより詳細に記入するなり、はたまた新たに質問し直すにしても、どのようなネットワーク形態なのかなど、違った内容にすべきだとは思いますけども。 補足蘭やお礼欄の内容によっても、自分が回答・アドバイス出来る内容なのかどうかが判断できるわけですから。(誰も回答してくれない、ではなく単に保留中といったことも有り得るわけですよ。) とまあ、プラトンはさておきソクラテスは・・・、っと。 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に専念できます。

参考URL:
http://www.smg.co.jp/seminar/JavaNetwork/NP_lecture00.html

その他の回答 (3)

回答No.4

単にサーバ,クライアントの1対多ってことですか? 基礎的なことでしょうか. で,クライアントをどうさばくかがわからない?? 前に,処理を別のパソコンにさせたくて InetAddress getInetAddress() で,ソケット通信受けた際に相手のIPアドレスを確保させ, 処理終了後,ソケット作成時にそれを利用させて 結果を送り返させるってのをやりました… >クライアントも1つ1つ変えなくては の1文から判断しましたが,全然関係なかったらすいません

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

いちばんふつうのやり方は、ServerSocketのaccept()コールがクライアント接続のSocketを返すたびに、そのSocketをコンストラクタ引数として新たなスレッドオブジェクトを作り、そのスレッドがクライアントとのI/Oをすべて行います。通常この方法で同時に数千クライアントぐらいを扱えます。 同時アクセス数が何万クライアントという巨大なサーバでは、SocketChannelによるノンブロッキングI/Oを使います。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

http://oshiete1.goo.ne.jp/qa4478303.html と同じ質問内容のようですが、どうしたのかな?

関連するQ&A

  • ネットワークプログラミング サーバーと複数のクライアントの接続の仕方を教えてくださいm(_ _)m。

    こんにちは。 サーバーと複数のクライアントの接続のプログラミング(java)を考えています。 サーバーをマルチスレッドに変えてクライアントも1つ1つ変えなくてはならないのか、どう変えていいのか分かりません。 ネットとか本でネットワークプログラミングについては調べてみたのですが、複数のクライアントの接続は応用みたいでなかなか参考になるのが見つかりませんでした。 サーバーと複数のクライアントの接続のプログラミング(java)の仕方を教えてください。また、参考になるホームページなどががあれば教えてください。 お願いします。

    • ベストアンサー
    • Java
  • ネットに接続していない、サーバーPCとクライアントPCのネットワークで

    ネットに接続していない、サーバーPCとクライアントPCのネットワークでの時刻の同期方法 Win2003ServerサーバーPC1台に複数のWinXPクライアントPCが繋がっているネットワークで、 インターネットに接続はしておらず、 この状態でクライアントPCすべてをサーバーPCの時刻に同期させることは可能でしょうか? 可能であれば方法を教えて頂けますでしょうか。 インターネットに繋がっているのならばNTPサーバーというものが使えるらしいのですが・・・今回は繋がっていないのでこの方法は不可能です。 経験のある方、よろしくお願い致します。

  • TCP通信による1サーバ、複数クライアントモデル

    TCP通信による1サーバ、複数クライアントモデル(チャット等)をwinsockを使用して作成したいのですが、複数のクライアントからサーバにアクセスする方法がわかりません。マルチスレッドで、クライアントからの受信待ちスレッドと、ログイン中クライアントへのメッセージ送信スレッドが必要(?)なんでしょうか?また具体的なソースなど掲載されているページがありましたら教えてください。

  • クライアントサーバ型LANについて

    今、ネットワークについての参考書を読んでいます。 クライアントサーバ型LAN(可能な処理方法) 『 1台のサーバが (省略) 処理要求を出すこともできます。   サーバにUNIX、クライアントにWindows2000など異なるOSを搭載して使用でき、クライアントにネットワークOSを搭載し1台でも兼用できます。』 以上の記述がしてあります。 『1台でも兼用ができます』と書いてありますが、これはネットワークOSを搭載すれば、1台で複数のサーバを兼用できるいう事でしょうか? よろしくお願いします。

  • ネットワークプログラミングについて

    過去ログを検索してみて質問:socの秀和システム出版の「Javaネットワークプログラミング」に載っているクライアント・サーバ型のチャットプログラムについての質問がありました。 私も同じ本で学習しているのですが、過去ログの方の例では1台で実行した場合、2台でネットワーク経由で実行した場合両方とも成功していました。 このプログラムをコンパイルして実行してみてもサーバーに接続できませんと出ます。このプログラムを実行するにはどのような環境、コマンド等が必要でしょうか? 私が試している環境はJ2SDKでWindowXP一台でコマンドプロンプトでchatsv.javaとchatcl.java(アプレット)の両方をコンパイルし、chatsvを実行。chatclはHTMLファイルを作り、それを実行するとIPアドレスを指定画面が出るので指定します。通信はSocket通信です。WindowsのIPアドレス(自分)にはpingもしっかり通っています。 あと2台でネットワークを介した起動では、クライアントには上記のWindowsを、fedora core3を使ってサーバープログラムを起動。こちらも同様にchatsvを実行し、apacheにchatcl.htmlを組み込んでいます。windos側、fedora側から実行しても接続できません。こちらもwindowsからIPアドレスを直接指定するとチャットアプレットは見ることはできますし、pingも通ります。 長くなってしまいましたが、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • ネットワークプログラミングを勉強しようとしているのですが。

    プログラミング初心者です。 C言語でWindowsプログラミングを一応学び、それを利用してゲームを作るのと平行してネットワークも勉強しようと思っています。 使おうとしている書籍は"UNIXネットワークプログラミング入門"という書籍で、初めてネットワークプログラミングを勉強しようとしています。 そこでその本の第二章(p32)のチャットプログラムを動作させようとしたのですがうまくできません。ソースコードはhttp://www.gihyo.co.jp/books/support.php/4-7741-1754-4 に置いてあるフォルダのchap2というフォルダにあるコードです。 まずcygwinでサーバのプログラムを動作させてから、cygwinをもう一つ起動させてそちらでクライアントのプログラムを動作させればいいと書いてあると「思う」のですが、動作しません。クライアントのプログラムを動作させても「gethostbyname: Operation not permitted」というメッセージが出て終了してしまいます。 もし、同じ本を使ったことがある方、またはそうでなくても超初心者がしてしまうような間違いや手順足らずなことなどに心当たりがあれば教えて下さい。

  • ネットワークプログラミングを勉強しようとしているのですが。

    プログラミング初心者です。 C言語でWindowsプログラミングを一応学び、それを利用してゲームを作るのと平行してネットワークも勉強しようと思っています。 使おうとしている書籍は"UNIXネットワークプログラミング入門"という書籍で、初めてネットワークプログラミングを勉強しようとしています。 そこでその本の第二章(p32)のチャットプログラムを動作させようとしたのですがうまくできません。ソースコードは​http://www.gihyo.co.jp/books/support.php/4-7741-1754-4​ に置いてあるフォルダのchap2というフォルダにあるコードです。 まずcygwinでサーバのプログラムを動作させてから、cygwinをもう一つ起動させてそちらでクライアントのプログラムを動作させればいいと書いてあると「思う」のですが、動作しません。クライアントのプログラムを動作させても「gethostbyname: Operation not permitted」というメッセージが出て終了してしまいます。 もし、同じ本を使ったことがある方、またはそうでなくても超初心者がしてしまうような間違いや手順足らずなことなどに心当たりがあれば教えて下さい。

  • ネットワークプログラミングについて

    C言語のネットワークプログラミングについて質問です。 UDPで通信を行う際に、daytimeクライアントとサーバの変更する必要がある所はどこになるのでしょうか?  また、どのようなヘッダや関数になるのでしょうか?

  • クライアントが接続してくるとネットワークが固まる

    初めて質問サイトを使わせて頂きます。 わかりにくい説明でしたら申し訳ありません。 カテゴリも、ここでよいか迷いました (ハードウェア(サーバー)な気も?) ※当方トラブルは基本自力で解決派でSOS出動とかしてるんですが、 ※映像再生で不定期にフリーズとか、WakeOnLanや、PowerOnDvice無効なのに仕事から帰ってきたら ※なぜか電源が入っていたとか、自らがトラブルが多い人種です。 私、度々趣味でサーバーを立てたりしていまして(本格的なのではなく) 今回もあるサーバーソフトを使い稼動させております。 サーバー機となるマシンのスペックは後ほど記述しますが サーバーにクライアントが接続してくると、サーバー機側のネットワークがフリーズする という現象に困っております。 流れとしては サーバーを起動する。  ↓ クライアントが接続してくる  ↓ サーバー側で、接続してくるのを確認。  ↓ クライアント側ではそこから進まずタイムアウトになる。  ↓ サーバー側では、接続確認をした直後からネットワーク周りが全滅して ルーターにすらアクセスできない状態になる。  ↓ LANケーブルを抜き差しすると復旧する。 当初オンボードイーサネットにてサーバーのテストをしていたのですが クライアントで接続試行すると何度やってもうまくいかず。 しぶしぶ眠っていた得たいの知れないLANボードをPCにつけて そちらでテストをするとなんなく接続を確立する事ができました。 DHCPで振り分けしなおしたり、ポート変更掛けたり、 LANアダプタ設定を見ても、ネットワーク専門ではないので、それらしい発見はできませんでした。 オンボードでのネットサーフィンとかどこぞのサーバーに接続したりとかは 一切問題がないので、イーサの故障とも考え難いのです。 かといって、サーバーソフト側に問題があるのかは定かではありません。 LANボードをそのまま使えばいいという話でもあるのですが 元々サーバー用のマシンではないので空きPCIスロットが無いのです できればオンボードでしばらく代用したいのですが・・・ 何か心当たりのある方、いらっしゃいましたら こういう経験あったとかでも構いませんので、情報をお願い致します。 足りない情報があればその都度投稿します。 サーバー機スペック CPU PhenomII x4 945 Mem DDR3 8GB M/B ASRock 890FX deluxe3 OS WindowsXP pro sp3 router IOdata ETG-R(安易な判断で昔買った物、SPIは内側からも異常反応するので無効) etc SSD C300 x2(RAID)    wavio SE-200PCI-LTD改    REX-SATAカード 「以前」使用した事のあるサーバーソフト類 ・WarFTPd ・Apache ・AnHTTPd ・IRC ・幾つかのゲームサーバー 今回使用しているサーバーソフト ・CraftBukkit.jar b1.3

  • クライアントPCのデスクトップに、同ネットワーク上のサーバPC(例:¥

    クライアントPCのデスクトップに、同ネットワーク上のサーバPC(例:¥¥Server)のショートカットを『未接続時』に作成したいと思っています。(クライアントPCが複数台あるため、ネットワークに接続する前に設定を行いたいと思っています。) サーバとクライアントが接続されていれば、ショートカットは作成されるのですが、未接続時は「ファイル¥¥Serverが見つかりません」とエラーが出てしまいます。 レジストリの「NoResolveSearch」、「NoResolveTrack」、「LinkResolveIgnoreLinkinfo」の設定を変更してみましたが、こちらの設定はショートカットの作成に有効ではありませんでした。 環境変数でPathを通してみましたが、こちらも有効ではありませんでした。 環境はサーバ、クライアントPCともに『WindowsXP Pro SP2』です。 何か良い方法をご存じでしたらご教示願います。

専門家に質問してみよう