OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ソケットインタフェースに関して

  • すぐに回答を!
  • 質問No.217063
  • 閲覧数93
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (1/2)

クライアント/サーバ間でTCP/IPソケットのプロトコルを使用してネットワークを構築しようとしています。
TCP/IPソケットで、最初のクライアントAからconnectされた状態でクライアントBから同一ポートにconnectされた場合、クライアントBからのconnectを有効にしたいと考えています。本場合、他のクライアントからconnectされたことがTCP/IP層で検知可能でしょうか?また、アプリケーション層での作りは、どのようにすればよいか知っている方教えて下さい。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

select() もしくは accept() で socket が接続保留されているかどうか分かります。

クライアントAからの接続を維持し、クライアントからの電文を受け付ける状態にしつつ
クライアントBからの接続を待つのであれば、それぞれを別スレッド、もしくは、別プロセスにする
必要がありますね。
お礼コメント
pipi-tan

お礼率 50% (1/2)

ありがとうございます。
listen()でデータ入力を待っている最中にクライアントBからのconnectは、そもそもTCP/IP層でエラーとなる気がしますが、後でconnectしてきたクライアントとconnectすることは可能ですか?
投稿日時 - 2002-02-13 17:47:47
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

> listen()でデータ入力を待っている最中にクライアントBからのconnectは、そもそもTCP/IP層でエラーとなる気がしますが ん? listen() は、クライアントAからの接続が済んでいるのだから、もう必要ないですよね。 ちょっといいかげんですが、簡単にサーバのプログラムの構造と、処理の流れを書いてみます。 クライアントとの通信処理を、サーバの子プロセスとして処理す ...続きを読む
> 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で解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ