- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Socketの使用方法について)
Socketの使用方法とは?待機状態を維持する方法を知りたい
このQ&Aのポイント
- Socketの使用方法について、サーバ側クラスAとクライアント側クラスBについて説明します。
- クライアントからの接続を受け付け、処理後に再び待機状態に戻る方法についても説明します。
- ソケットを使用して複数のアクセスを処理する方法についても説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>Closeではなく、このままこのソケットを使用して待機したいです。 何か勘違いしてますね。クライアントからの接続を受け付けるのは svsockであって、 socketではありません。使用済みのsocketを 残しても再利用できませんし、資源の無駄になるだけです。 例えばFTPサーバではポート番号=21でbindしたソケットでaccept します。しかし、acceptの戻り値で受け取ったソケットはポートが 21ではありません。当たり前ですが、同じマシン内でポート番号が 同じソケットが複数存在できないからです。また、この機能によって、 同じクライアント-サーバ間で複数のFTP接続ができるのです。 >同時刻に複数のアクセスがある サーバ側プログラムでは当然の話で、マルチスレッドで対応します。 掲題のプログラムのようにマルチスレッドでない処理の方が不自然 です。 acceptで待機状態になり、クライアントのconnectを受け付けると 次のステップへ進みます。ここで、Threadを継承したクラスを使って、 新スレッドを立ち上げ、以降の処理は新しいスレッドで処理します。 メインスレッドは新スレッドを起動したら、再び、acceptに戻ります。 例え、僅かな処理でもこうすべきです。 ソケットは処理クラスのコンストラクタで渡せば良いでしょう。