アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者的質問で申し訳ありません。
クライアントサーバ型のアプリケーションを製造するとき、サーバ側のプログラムに固定のポート番号を割り当てないと、通信ができないですよね?
例えば、40000にしよう!と決めたとして、サーバPCは、40000=(製造した)サーバプログラムというのをどうやって認識するのでしょうか?サーバPC側での定義をするのですか?

A 回答 (3件)

クライアントプログラム というのがあるのは判るだろうか


それに対し 当然サーバプログラム というのもある。
サーバプログラムは特定のポートからの通信を見張り、待機しているような物が殆ど。
一番判りやすく有名なのがapacheとTCP80。
対してクライアントは各種ブラウザ(あれもhttpでアクセスはTCP80)

この回答への補足

ありがとうございます。
サーバプログラム自身がサーバPCに入っているTCPまたはUDP
パケットを見ていて、自分のポート番号宛のパケットが来たら
取り込む、という動きをしているということでしょうか?

補足日時:2007/04/04 08:05
    • good
    • 0

サーバープログラム中で指定します。

二通りやり方があって、
・固定で4000とコード中に書く
・サービス名を決め、/etc/services に番号との対応を書いて getservbynameでサービス名からポート番号に変換します
後者であれば/etc/servicesのファイル編集だけで番号を変更できます。

Windowsの場合はファイルやサブルーチン名が異なるでしょうが、基本的には同じです。
    • good
    • 0
この回答へのお礼

WindowsもWINDOWS\SYSTEM32\DRIVERS\ETCにservicesファイルがあってウェルノウンポートの番号が書いてありますね。ここにサーバプログラムのサービス名とポート番号を追記するイメージかしら?
ともあれキーワードをいただいたので調べられそうです。
ありがとうございます。

お礼日時:2007/04/04 08:19

OSに関係なくソケットプログラミングをしたい場合は、やはりJavaでしょうか?



JavaでHello World > ソケット編
http://www.hellohiro.com/socket.htm

上記のサイト内にもある通り、「◆サーバー側ソースコード」の所で、ServerSocketクラスのインスタンスを生成する際に、コンストラクタの引数指定で、ポート番号をそのまま利用していますね。(「// サーバーソケットの生成」のすぐ下の部分。)

JavaのServerSocketクラスに関して、もっと詳しい情報が知りたい場合は、以下のAPIリファレンスを参考にしてください。

java.net
クラス ServerSocket
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/in …
    • good
    • 0
この回答へのお礼

おお!
javaなんかだと「ソケットの生成」というスクリプトがあるってことですね!
私のケースはjavaではありませんが、言語によってはプログラム側から能動的にソケットを決定できる、ということがわかりさえすれば、今抱えている問題は解決です。
どうもありがとうございました。

お礼日時:2007/04/05 00:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!