![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
早速ですが、ソケット通信について質問です。
複数クライアント(Win)からサーバ(UNIX)に対して、connect()し、サーバ側はaccept()したら、それぞれに対しfork()で子プロセスを作っています。
そこで、50台くらいのクライアントから一気にconnect()すると通信エラーとなってしまうのですが、なにか制限があるのでしょうか?
connect()のタイミングをずらせば、それぞれのクライアントとサーバの子プロセスでやり取りができます。
一斉にconnect()される場合の通信エラーの原因や対処法などをご教授願います。
初歩的なことかもしれませんが・・・。
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
エラーの内容が不明なのではっきりしたことは言えませんが、Spiraさんの言うようにlisten()の引数が一つの原因ではあるかもしれません。
この引数はbacklogといってデフォルトでは5程度になっています。これはどういう意味かというと、listenしているポートに対しacceptがコールされるまで待ってくれる最大数を意味し、つまりacceptされないconnect要求が5個溜まると、それ以後は即座にconnect関数が失敗することになります。従ってlisten(50)としてやれば一応の解決にはなるでしょう。ただ、サーバ側の処理としてはできるだけすぐにacceptしてやるべきで、backlogを大きくとるのはあまり上手なプログラムではありません、、、がんばって下さい。詳しい説明ありがとうございます。
listenの引数は100を設定していました。
acceptではなく、forkで異常になっているようでした。
errnoは10のようですが、もう少し調べてみます。
ありがとうございました。
No.2
- 回答日時:
listen()の引数に同時に処理(保留)できるコネクション数を設定できたような気がします。
(覚えてない…)この値を増加させてみたらいいのではないでしょうか?
この値はあくまでも【同時】に接続要求がきた場合のことなので、パラパラと接続要求がくるぶんには関係ありません。お尋ねの現象と合致するような気がします。
お礼が遅くなりました。
listenの第2パラメータには100を設定しています。
しかし、100台もつないでいないため、違う原因かと思っています。
また、acceptではなく、forkで異常になっているようでした。
errnoは10のようですが、もう少し調べてみます。
ありがとうございました。
No.1
- 回答日時:
最大ソケット数というのはありますが
しかし50台とかそんな小さい数字ではないはず。
でもかならず51台目にかならずコネクションがはれないのであれば
サーバーがそういう制限をかけたソースなのでは?
acceptが失敗しているんですよね?
http://www.linux.or.jp/JM/html/LDP_man-pages/man …
acceptがなんでエラーがでているのかを調べてください。
お礼が遅くなりました。
acceptではなく、forkで異常になっているようでした。
errnoは10のようですが、もう少し調べてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メールソフト・メールサービス) Thunderbird メール受信 できない時にエラーが欲しい 1 2023/05/26 15:07
- その他(メールソフト・メールサービス) メールが送信できない 発信側でできる対策 3 2023/05/11 10:22
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- PHP PHP でメールフォームを作成したい 1 2022/05/04 22:28
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
- サーバー active directory のユーザをローカルで使いたい 1 2023/07/22 07:40
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- 高校 私は今年22歳女性、未だに通信制高校休学中です。違う高校に入り直したいです。 閲覧ありがとうございま 8 2022/05/29 14:52
- その他(メールソフト・メールサービス) PCでメールは発信について 6 2022/08/13 09:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの...
-
バッチファイルで以下のような...
-
C++でデスクトップGUIアプリ開...
-
擬似コード 長さがmの配列でな...
-
Windows Formアプリからコンソ...
-
mallocについて
-
だれがとけるの?
-
C言語をコンパイルするとコンピ...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
C言語 列挙型(enum型)変数について
-
卒業研究でよく分からないとこ...
-
scipy っていうのをいれようと...
-
chatgptでつくってもらったコー...
-
c言語
-
パイソンの
-
VisualStudio2022でC言語プログ...
-
Int('1234') で、strをかんたん...
-
License='MIT' ってなんでmitな...
-
gcc13.2のバグ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
ソケット通信で同時受信の制限?
-
vbscriptの変数宣言
-
名前が二重に定義されています
-
EXCEL VBA API宣言でコンパイル...
-
VBSでIEを起動し、拡大率を変更...
-
VBSにてサーバー中のエクセルフ...
-
式はメソッドではありませんと...
-
ハンゲーム
-
COBOLのPERFORM文
-
標準モジュールPublic宣言変数...
-
golang 空文字判定について
-
TCPサーバ bind関数のエラーに...
-
ACCESSのAutoKeysマクロでアク...
-
CreateObjectの同時実行時について
-
十進BASICについて
-
ダブルクォーテーションの吐き出し
-
エクセル同一セル内の指定文字...
-
イメージ表示
-
C# try-catch でcatchに飛ばす方法
おすすめ情報