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で質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 「プロトコル」の定義について 5 2023/04/16 13:13
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
- ネットワーク 社内ネットワークの1台だけ接続できないときがある 4 2023/01/25 11:58
- Windows 10 リモートデスクトップ接続 1 2022/07/12 14:30
- 個人事業主・自営業・フリーランス クラウドワークスとランサーズ、両方ご利用の方、源泉徴収について教えてください。 2 2022/04/27 16:13
- その他(税金) フリーランスの源泉徴収税について教えてください 3 2022/04/27 14:46
- ファイアウォール ポート開放で利用可能なTCP一覧の中に利用したいTCPが入ってない場合どうすればいいのでしょうか? 2 2022/09/12 10:31
- サーバー (童顔♀です)webサイト納品後,記事更新をこちらでする場合どうやりますか....? 3 2023/08/09 04:44
- ルーター・ネットワーク機器 ネットワーク共有フォルダーにWi-Fiで接続したい 4 2022/06/17 00:01
- PHP PHP でメールフォームを作成したい 1 2022/05/04 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ssh接続に伴うメッセージについて
-
ApacheとTomcatについて
-
FileZilla ClientというFTPソフ...
-
wifiの設定
-
特定の中国のサイトに日本から...
-
ポリシー等で特定のサイトだけ...
-
VPN接続時のドメイン参加について
-
FTPコマンドでも接続できない
-
TERATERMだけSSH接続できない
-
グローバルIPの先のプライベー...
-
MacとWinのLAN接続
-
特定のプロバイダーでは接続で...
-
ログについて
-
VPNを使わないとフリーWi-Fiは...
-
VPN接続確立後、Pingが通らない
-
マインクラフトのサーバーに接...
-
サーバーログイン情報とFTP接続...
-
今Free-WiFiが使える所にいます...
-
リモートデスクトップに再接続...
-
Wi-Fiに接続しているのにグルグ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポリシー等で特定のサイトだけ...
-
VPN接続時のドメイン参加について
-
リモートデスクトップと動的IP...
-
TERATERMだけSSH接続できない
-
ログについて
-
特定のクライアントPCからssh接...
-
phpMyAdmin ログインできない
-
FireFoxを社内で使用する場合の...
-
Ruby on railsをrails sで立ち...
-
iphoneを遠隔操作したい
-
VPNでyahooが見れない
-
sshでは接続できるのにsftpは接...
-
CiscoルータへのTELNET接続がで...
-
VBからネットワーク接続の制御(...
-
画像のように、鍵のかかってい...
-
リモートデスクトップに再接続...
-
FTPサーバに外部から接続で...
-
TeraTermマクロでlistboxを使い...
-
リモートデスクトップ接続のア...
-
掲示板を閲覧中のPCのIPアドレ...
おすすめ情報