No.1ベストアンサー
- 回答日時:
select() もしくは accept() で socket が接続保留されているかどうか分かります。
クライアントAからの接続を維持し、クライアントからの電文を受け付ける状態にしつつ
クライアントBからの接続を待つのであれば、それぞれを別スレッド、もしくは、別プロセスにする
必要がありますね。
この回答へのお礼
お礼日時:2002/02/13 17:47
ありがとうございます。
listen()でデータ入力を待っている最中にクライアントBからのconnectは、そもそもTCP/IP層でエラーとなる気がしますが、後でconnectしてきたクライアントとconnectすることは可能ですか?
No.2
- 回答日時:
> listen()でデータ入力を待っている最中にクライアントBからのconnectは、そもそもTCP/IP層でエラーとなる気がしますが
ん?
listen() は、クライアントAからの接続が済んでいるのだから、もう必要ないですよね。
ちょっといいかげんですが、簡単にサーバのプログラムの構造と、処理の流れを書いてみます。
クライアントとの通信処理を、サーバの子プロセスとして処理するやり方を使います。
■サーバのプログラム構造
/* 準備 */
socket()
bind()
listen()
ioctl() /* 必要なら */
/* 接続待ち */
while (accept()) {
/* 通信処理:socket を使ってクライアントとやりとり */
}
■処理の流れ
・サーバ側の準備を済ませ、while の accept() で接続待ちになる
・クライアントAから connect() されると accept() から返ってくる
・子プロセスを fork() し、そこで返ってきた socket を使ってクライアントAとやりとりをする
・親プロセスは fork() し終わると、while() の accept() で次の接続を待つ
・親プロセスでは、後でクライアントAと会話しているプロセスを殺すためにプロセスIDを保存しておく
・クライアントBから connect() されると accept() から返ってくる
・クライアントAと会話しているプロセスを殺す
・クライアントBと会話するための子プロセスを fork() する
といった感じになると思います。
# もちろん、スレッドを使ったり、いろいろな組み合わせはあると思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポリシー等で特定のサイトだけ...
-
sshでは接続できるのにsftpは接...
-
コントロールパネルのネットワ...
-
ADO接続でログイン画面がでるの...
-
phpMyAdmin ログインできない
-
社内LANからのFTPが繋がりません
-
FireFoxを社内で使用する場合の...
-
ssh接続に伴うメッセージについて
-
VPN接続時のドメイン参加について
-
公衆無線lanのセキュリティにつ...
-
windows7でのpscpについて
-
NTT西 セキュリティ対策ツール...
-
FTPサーバに外部から接続で...
-
価格コムに接続できません。
-
8000番や8080番のポー...
-
ワイヤレスマウスUSBレシーバー...
-
インターネット接続できません...
-
パソコンの「ローカル」って、...
-
Dell Inspiron 14 5415 をコン...
-
iPhoneでIPアドレスを変更する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポリシー等で特定のサイトだけ...
-
VPN接続時のドメイン参加について
-
リモートデスクトップと動的IP...
-
Ruby on railsをrails sで立ち...
-
TERATERMだけSSH接続できない
-
VPN接続確立後、Pingが通らない
-
iphoneを遠隔操作したい
-
ApacheとTomcatについて
-
特定のクライアントPCからssh接...
-
特定の中国のサイトに日本から...
-
リモートデスクトップができない件
-
ログについて
-
リモートデスクトップ接続のア...
-
macです。サーバに接続できません…
-
FTPサーバに外部から接続で...
-
TeraTermマクロでlistboxを使い...
-
VB2008 で外部のMySQLに接続で...
-
今日、楽天光が950kbpsになった...
-
VBからネットワーク接続の制御(...
-
ログオン画面表示前に無線LA...
おすすめ情報