• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:前回はごめんなさい。pythonでcgiとソケット)

Pythonでのサーバーソケット通信について

このQ&Aのポイント
  • Pythonのプログラムをサーバーで動かすためには、cgiファイルを作成します。
  • ソケット通信を行うには、cgiでなくソケット通信を行う必要があります。
  • サーバーに移す際には、localhostのエラーが発生するため、gethostnameやgethostbynameを使用することで解決できる可能性があります。

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

実際にやってみたこともないしPythonは門外漢ですが普通に考えると CGIっていうのはWebサーバの持つユーザ権限で通常のプログラムを実行して、実行結果を標準出力でブラウザに橋渡しするだけの仕組みなので、普通のソケットを利用したプログラムでも単体動作するものなら動作はすると思います。 ただ、深く追ってはいませんがサンプルのプログラムをざっと見る限りサーバとしてのプロセスを発生させようとしているのでこれは無理かと思います。 なぜなら、CGIで呼び出されるプロセスはWebサーバの子として呼ばれるためWebサーバの設定であらかじめタイムアウトの時間が設定されているからです。 たとえばApacheならデフォルトで300秒が設定されますので5分たてば切り捨てられます。 サーバ機能と兼任するようなプロセスはシステム上で実行させる以外ないと思います。 クライアント機能のみで短時間で処理が終了するものならOKかと思います。 この手のプログラムはJavaアプレットでならできるかもしれません(昔チャット用のクライアントサーバをブラウザ上で動かすものを作りましたが、CGIではありません)

poteto0413
質問者

お礼

ありがとうございました。 CGIの方でsocketやる方法も有るには有るようなのですが、 自分には理解出来ませんし(普通のプログラム(実行ファイル)の様な書き方しか分かりませんし)、 今回はexeが使用可となったので普通の実行ファイルの方で作成していくことにしました。 ありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

CGIとPythonスクリプトは別な概念です。 このスクリプトは、CGIとして間違っている(HTTPヘッダが無い)ので、CGIとして動作させてもエラーになります。 また、while(True)で待ちを入れているようですが、こういうのもCGIではエラー(タイムアウト)の原因となります。 こういうものは、単独で実行させるものではないでしょうか? CGIでやるにしても、制御用CGIを作ってブラウザから開始/停止させるとかです。 @pagesでそれができるかはわかりません。 レンタルサーバーでは、単独のプログラム実行を禁止していることがあります。

poteto0413
質問者

お礼

回答有難うございます。 このままのpythonスクリプトは動かせないのは理解しています。 ですがソケット通信をしたいのです。 以前perlかPHPでソケット通信をするスクリプトを見ました。 pythonでソケット通信自体は可能なのでしょうか? もちろんcgiでの話です。

関連するQ&A