QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

ソケット通信とhttp通信

0 PV

こんばんは

今、ある監視システムの設計をしています。

障害時に、クライアントから情報をサーバに通知して、
サーバで情報を更新するシステムです。

当初ソケット通信にて独自の手順で検討していましたが、
http通信で行ってもいいのでは?
という思いもしてきました。

同時にMAX何百台も通知が来る可能性もあり、
その場合にhttpでサーブレットで受け付けるほうが
スレッドのことをあまり気にしなくてもいいかと・・・

ソケットとhttpを比較して
ソケット通信の優位性って何かあるのでしょうか?
逆にhttpの優位性は?

ご教授いただけないですか?

質問者:takuman

回答

takumanさんの書き込み (2006-06-25 21:58) より:

ソケットとhttpを比較して

ソケット通信の優位性って何かあるのでしょうか?

逆にhttpの優位性は?

HTTP がよさそうな部分
(そのままWebアプリケーションの利点になりそうだけど・・・)
・サーバ側プログラムをWebアプリケーション、WebServiceで作れる
・暗号化とかの場合簡単に乗せられる
・Proxyが使える
・ルータに新しい穴を開けなくてもいい

投稿者:かるあ

編集 履歴 (0)

ソケットだとセッションを張りっぱなしにして通信できますが、これが優位性かどうかは使う場合によって変わりますね。

今回のケースでは、障害発生時に・・・ということですから、あんまり関係ないですかねw
逆に http の方が簡単に作れるかも知れませんね。

チャットとか、複数台のコンピューターでデータの同期を取らせるようなシステムを作る時はソケットを使いましたが。

投稿者:R・田中一郎

編集 履歴 (0)

今、ある監視システムの設計をしています。

障害時に、クライアントから情報をサーバに通知して、

サーバで情報を更新するシステムです。

独自プロトコルよりも汎用プロトコルのほうが良いのではないかと考えたわけですね。であれば HTTP 以外のプロトコルも検討してみてはどうでしょうか。上記の要件であれば、syslog や SNMP Trap などのプロトコルも良い選択肢だと思います。syslog や SNMP Trap であれば、障害情報を受け取るサーバー側プログラムを市販のものに置き換えることができたり、逆にクライアントの様々な情報を自作のサーバーで受け取ることもできるようになります。

投稿者:未記入

編集 履歴 (0)

R・田中一郎さんの書き込み (2006-06-26 01:56) より:

ソケットだとセッションを張りっぱなしにして通信できますが、これが優位性かどうかは使う場合によって変わりますね。

今回のケースでは、障害発生時に・・・ということですから、あんまり関係ないですかねw

逆に http の方が簡単に作れるかも知れませんね。

チャットとか、複数台のコンピューターでデータの同期を取らせるようなシステムを作る時はソケットを使いましたが。

ありがとうございます。
httpとsocketではレスポンスはどうでしょうか?
後、サーバから端末側への死活監視も行います。
つなぎっぱなしにして同じ接続で行ったほうがいいのでしょうか?

投稿者:takuman

編集 履歴 (0)

比べるというよりも、ソケット<http かと。
例えば、httpd を自作する時、ソケットを使います。
つまりソケットを使うと自作する部分が多くなる分、細かいことができるようになる訳です。

で、今回のお話ですが、クライアントの数が大量になるなら、僕なら http でcgi的な動きをする仕様を検討します。
大量の数のクライアントの分だけサーバーがセッションを繋ぎっぱなしにすることは現実的ではありませんし、もちろん、ソケット側で毎度リスニングして空いているポートを探してセッションを確立することを毎度行わせることもできますが、自分で書くのは面倒ですし^^;

死活監視するなら、適度な感覚で生きていることをサーバーに報告するようにしますかね。タイムラグが生じますが、ある程度は仕方がないっす。

下記の部分、修正しました。(*)

[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-07-03 13:28 ]

投稿者:R・田中一郎

編集 履歴 (0)

比べるというよりも、ソケット<httpd かと。

httpd を自作する時、ソケットを使いますし。

httpd はプロトコルを指す語ではありません。
httpd は、特定のWebサーバの実装を示します。

Hyper Text Transport Protocol の略語は HTTP です。

投稿者:渋木宏明(ひどり)

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。