No.2ベストアンサー
- 回答日時:
ソケット通信とは「交通ルール」みたいなものです。
そのルールでは「赤信号は止まれ」とか「この標識は駐車禁止」とかが決められています。
Webというのはhttpというルールでやり取りしています。
httpとは「郵便局の配送ルール」みたいなものです。
郵便局は「交通ルール」という道路を使う上で守らなければいけないルールを守りながら、自分達のルールで局の間や配達先に郵便物を配っています。
通信ではこのルールのことをプロトコルと呼び、交通ルールのようにより基本的なプロトコルは「下位のプロトコル」、郵便局のルールのように実際の業務に近いものを「上位のプロトコル」と呼びます。
質問者さんはこの「httpで」というところで話されているので、metaタグとかPHPではという話になっています。
ところが#1さんは「ソケット通信」のところで話してますので、JavaやPHPや他の「ソケット通信」が可能な言語なら「あなたのオセロゲームの通信ルール」を自分で作れますよ、とおっしゃってるのだと思います。
そして「httpだけ」を使っている以上、サーバ側の処理をどんなプログラム言語でやっていようが、クライアントから定期的に情報をとるようにするにはmetaタグでの処理が必要です。そのためサーバ側がサーブレットでもJSPでもPHPでもhttpを使っているので、同じようにmetaタグを使わねばならないでしょう。
「ソケット通信」では上位のプロトコルを自前で作ってしまう上に、「ソケット」が作れるプログラム言語ならどの言語ともやりとりできるので、なんでもありなのです。
JavaとPHPの大きな違いはブラウザ上で動くプログラムを作れるかどうかです。
PHPは(私が調べた限り)できないようですが、Javaはアプレットがあります。
このアプレットを使えば、一見するとWebで(=http)でやりとりしたように感じますがアプレットがソケットを使えば、最初にhttpをつかったかどうかに関係なく、他のプロトコルを使うことができるのです。
と、ここまで説明したところで・・・「Javaで」と聞かれたとき、それがどこで使われるのかによって答えは変わります。
クライアントでも使えるのならソケットを使えばなんでもありだし、サーバでhttpだけならPHPと変わりありません。
ありがとうございます
クライアント側でアプレットを実行するのはJavaが使えないクライアントを排除することになるので魅力が減退しますね?
PHPとMETAでやればすべてのブラウザに対応できるので
相手が打つのを待っているクライアントの定期的な更新による画面のちらつきを我慢しなければならないけれども
最適かもしれませんね?
No.1
- 回答日時:
詳細が不明なので回答しにくいですが、一般的にはソケット(JavaならSocketクラス)を使えば可能でしょう。
ただし、これはJavaに限った話ではありません。ソケット通信は大抵のプログラミング言語で使用可能です。
質問者さんはWebを利用したいのでしょうか?
それであれば、Javaアプレットでサーバプログラムとソケット通信すれば可能です。
(アプレットでなくActiveXでも可能かもしれません。)
もちろん、サーバプログラムはどこかに用意しておく必要があります。
サーバの方はJavaでなくても構いません。
Webを利用しない場合は、クライアント/サーバ共に通常のアプリケーションになります。
この場合もクライアント/サーバ間での通信はソケット通信になると思います。
必ずしもJavaを使う必要はありません。サーバとクライアントで別の言語を使用しても構いません。
ただ、複数のOSで動作するクライアントプログラムを作るためにJavaを使用するのは良い選択だと思います。
>どういう仕組みでサーバとクライアント2者間でのやり取りをするのでしょうか?
ソケット通信ならどうとでもできるかと…。
この回答への補足
ありがとうございます
質問者さんはWebを利用したいのでしょうか?:
そうです
最初にサーバにアクセスした人が先手になり
次にサーバにアクセスした人が後手になり
それぞれにオセロ盤が表示され
自分の番のときに盤上をクリックするごとに石が置かれていくのです
例えば先手がクリックすればサーバはそれに対する応答を先手に返すことができるのですが
先手のクリックを後手に知らせる方法がアクセスが一過性であるために難しいのです
そのためにPHPでは相手が打つのを待っているほうに
<meta http-equiv = "refresh">
で定期的に自動更新させるという方法を取るしかないかと思います
サーバをSとし
先手をAとし
後手をBとしたとき
Aがクリックした情報をSをとおしてBに知らせるには
Javaではどのようにするのでしょうか?
<meta http-equiv = "refresh">
を使わなくていいのですね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オープンアプリの 通信許可の...
-
マイコンを用いたバイナリー形...
-
Javaプログラム同士のプロセス...
-
comThread を、COM1のみで送受...
-
Connectエラーが出てしまう・・...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
C# シリアル通信でデータ受信...
-
UWSCがうまく動かない
-
このレジの並び方は間違ってま...
-
マージャンのゲームを作りたい...
-
プロセス終了の検知について
-
VBA kernel32 の意味
-
Arduinoのプログラムで質問です。
-
家電製品の電力周波数を変える機械
-
isoをimgに変換したいのですが...
-
c++からfortranの関数を呼び出す
-
Mac 乗数の入力方法
-
clock関数は正確じゃないの?
-
N88BASICのバイナリデータをテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
VB6のwinsockでconnectできない
-
UDP通信におけるbind関数について
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
Winsockで接続待ちタイムアウト...
-
UDP通信する時に、相手にどうや...
-
ソケットでクライアントのipア...
-
Connectエラーが出てしまう・・...
-
recv関数でフリーズしてしまう
-
UdpClient 送信元のIPアドレ...
-
Socket通信の0バイト受信について
-
同じLAN内パソコンのIPアドレス...
-
Winsockを使わずにVBでSocketを...
-
ソケットを用いた1対多通信につ...
-
ソケット通信 同じポート番号...
-
相手のIPアドレスを取得する方法
-
CreateFile関数でCOMポートが開...
-
送信したデータの一部が文字化...
おすすめ情報