こんにちは。
早速ですが、ソケット通信について質問です。
複数クライアント(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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ソケット通信で接続クライアントの上限を設ける
C言語・C++・C#
-
ソケット通信 同じポート番号でn対1はできない?
C言語・C++・C#
-
ソケットのrecvの戻り値が0
C言語・C++・C#
-
-
4
Winsockで接続待ちタイムアウトを設定する方法
C言語・C++・C#
-
5
char*を初期化したいのですが
C言語・C++・C#
-
6
TCP/IPポートの最大接続数は
ハッキング・フィッシング詐欺
-
7
UDP通信する時に、相手にどうやって自分のポート番号を教える?
Java
-
8
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
9
0xffffとは?
C言語・C++・C#
-
10
VB.net
Visual Basic(VBA)
-
11
TCP/IP通信時のサーバーからの受信
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArduinoのジャイロモジュールMP...
-
chatgptでつくってもらったコー...
-
プログラミング言語の制作方法...
-
だいがくの電し書籍で
-
こんなことてしますか??
-
Notepad++の関数リスト表示の変...
-
MACで動く実行ファイルをWindow...
-
C言語をコンパイルするとコンピ...
-
WindowsのCapsLock(キャップス...
-
Notepad++の関数リスト表示でC...
-
Linuxでの開発環境構築や設定の...
-
どなたかこのプログラミングを...
-
卒業研究でよく分からないとこ...
-
gccを行ってもexeファイルが生...
-
これなにがちがうんですか??
-
終端記号、非終端記号とは
-
C言語 解答について。
-
C言語初心者です、、、お助けく...
-
mallocについて
-
[C言語]fputsとfprintfの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
ソケット通信で同時受信の制限?
-
VBSでIEを起動し、拡大率を変更...
-
TCPサーバ bind関数のエラーに...
-
名前が二重に定義されています
-
VBSにてサーバー中のエクセルフ...
-
式はメソッドではありませんと...
-
vbscriptの変数宣言
-
EXCEL VBA API宣言でコンパイル...
-
CreateObjectの同時実行時について
-
標準モジュールPublic宣言変数...
-
golang 空文字判定について
-
VBSについて
-
ASPでAccessのデータを更新、削除
-
ハンゲーム
-
C# try-catch でcatchに飛ばす方法
-
FileCopy時のエラー
-
エラー 'ASP 0115' について
-
隠しフィールドをVBScriptでの...
-
EXECLマクロでshapeがグルーフ...
おすすめ情報