• ベストアンサー

ソケット通信 同じポート番号でn対1はできない?

Windows2000クライアントが複数あり、サーバソケット用APを作成したのですが、1対1では確認できたのですが、 n対1は、手法が変わるのですか? 疑問: PCとサーバ間でのソケット通信にて、相互に同じポートでなければいけないので、複数のPCからサーバソケット用AP で決めたポートに繋げに行くことが可能なのですか?

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

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.2

サーバのOSについての記述がないので、unix系とみなして回答します。 APを以下のように修正してください。 accept()したあと、fork()します。 親はaccept()で得たディスクリプタをclose()して再度accept()ループに入ります。 子はbind()で得たディスクリプタをclose()して、あとは1体1の場合と同様に通信を開始し、処理が終了したらexit()します。 fork()によって、接続を待つプロセスと受け付けた接続を処理するプロセスに別れることで、複数の接続を同時に受け入れ可能なサーバAPを作成します。 MTによる方法もありますが、まずはfork()をマスターしてください。

akira_akira
質問者

お礼

ありがとうございます。やってみます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

それができないと、”サーバの指定のポートに接続”ってのができなくなるのでは? httpやftp等のポート指定がなりたたなくなりますよ。 プログラム的には、サーバ側ではマルチスレッドかポーリングで、複数のクライアントからの要求を待つことになります。

akira_akira
質問者

補足

ありがとうございます。 例えば、サーバ日付取得ソケットAPを作成した場合(ポートを5000番) サーバデータ受信APを作成するとすると、この時のポートは違うポートで行うのですか? あともう1つ質問なのですが、ftpを使用しないで、 ポートを生成して、ファイルごとsend等のAPIで、 相手に送信できるのですか? それとも、ファイルオープンして、データを読み込んで、 送信しなければダメですか? 違う質問もしてすみません。。。

すると、全ての回答が全文表示されます。