68user's page 掲示板

Prev< No. 915〜920> Next  [最新発言に戻る] [過去ログ一覧]
No. 915 # へにか [URL] 2000/06/14 (水) 23:12:17
すいません、先の自作proxyは、あれ単体では動作しないので、
もし、眺めるのでしたら、お手数ですが、
http://henika.virtualave.net/view.cgi?0 を適当な名前に、
http://henika.virtualave.net/view.cgi?1 をfilter.plに、
http://henika.virtualave.net/view.cgi?2 をhtrans.plに
してください。

宜しくお願いいたします。

参照 http://henika.virtualave.net/japanese/proxy.htm

No. 916 # 68user 2000/06/14 (水) 23:24:55
> グラデゥウスの基盤手に入ったがどうしても無敵技で来ません
わからないです。というか、無敵技があったのか。
# ちなみに基盤じゃなくて基板です。

> 参考になりました。
と言っても、僕が書いた文章ではないので扱いには
お気をつけ下さい。まぁ、
> 参考といってもあの内容をそのまま引用したりするわけではありません。
ということなので、心配はしておりませんけど。


> 1) この例の128は、クライアントや言語に依らず(?)、OSによって
>  一意に決定されるもの。
です。

(FreeBSD では) この数はカーネル内部に書かれており、動的に数を
変更する仕組みもないので、一般ユーザでも root でも変えられません。
どうしてもというならカーネルの再コンパイルでしょうか。

とはいえ、他の UNIX 系 OS では動的に変更できたりする *可能性* はあります。
# ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。

> 画像の枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。
なお、FreeBSD では SOMAXCONN は128で、128*1.5=192 なので、待たせて
おけるクライアント数は最大 192 になります。しかし、本当にそれくらいの
コネクションが張られているのでしょうか? netstat で見ると ESTABLISHED に
なっているのが そんなにたくさんありますか?

あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
接続してみればわかると思います。

なお、http://X68000.startshop.co.jp/~68user/net/echo-3.html には
> もし backlog 以上のクライアントが同時に connect してきた場合は、
> サーバは接続を拒否するか、何もレスポンスを返しません。
とありますが、おそらくこれは間違いで、拒否することはありません。
カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
やってきたことすら検知できません。

一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

No. 917 # 68user 2000/06/14 (水) 23:25:53
> ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。
ioctl はありえないですね。デバイスじゃないんだから。

No. 918 # へにか [URL] 2000/06/15 (木) 22:29:25
ご回答、ご指導、どうもありがとうございます。

>カーネルの再コンパイルでしょうか。

こ、この時点で、止めが刺された気がしました。A^^;
多分、windowsでもあてはまるのでしょう。

>しかし、本当にそれくらいのコネクションが張られているのでしょうか?
> netstat で見ると ESTABLISHED になっているのが そんなにたくさんありますか?

早速、試してみました。
netstatで、ESTABLISHEDとなった本数(数回やった場合の最大)を以下に示します。

Local Address = n:80 は、 2
Local Address = n:8080 は、 5
Local Address = n:15xx は、 7 (15xx=1500番台)

http://henika.virtualave.net/japanese/browsers.htm には、このページ+36枚画像
あるので、ブラウザと思われる1500番台が、想像ですが、20近くないとおかしいような
気がします。この時点で、SOMAXCONNの値は1桁台と推測しました。

この時点で、自動的に、
>あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん
>接続してみればわかると思います。
を、満たしてしまっているような気がします・・・

因みに、SOMAXCONNをperlで表示させると、 5 でした(以下を実行)。
use IO::Socket;
print SOMAXCONN;
(思いつきで試したので、あまり意味がないかもしれません・・・)
これが正しければ、待たせておけるクライアント数は、5+alphaで、先の推測には
合致してるなぁ、と思い込んでいます。

う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。

>カーネルレベルで無視するだけで、サーバプログラム側はクライアントが
>やってきたことすら検知できません。

なるほど。windowsでも同様であれば、当方の現象(全ての要求を受付てくれない)
も納得いきます(logにクライアントから要求されるはずのイメージ・ファイルが
要求されていないようになっている)。

>一方クライアントからは TCP の 3way handshake の1発目の SYN に対する
>返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。

申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。
今後の課題・勉強材料とさせてください。

No. 919 # 68user 2000/06/16 (金) 01:48:47
> これが正しければ、待たせておけるクライアント数は、5+alphaで、
> ...
> う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。
うーん、ちょっとうそっぽいですねぇ。いくらなんでも一桁ってのは…。

SOMAXOCNN が誤って5になってしまったから、それ以上接続できない
という可能性はないですか? backlog に 10 や 100 を渡すと
どうなりますか?

僕はこれ以上わかりませんが、もし Winsock に詳しい方が
おられましたら教えて下さい。

No. 920 # james [E-mail] 2000/06/16 (金) 16:46:58
お久しぶり(?)です。

色々情報をもらって少し頑張って見たつもりですが、もーイヤ!と言う感じです。
やっぱり自分にはX−windowのプログラム作成は無理なんでしょうか?
そんなに簡単に出来るとは思っていませんが、でもいまの状態では全く持って・・

でも一つだけ決めた事があります。それは、Xlibだけで作成するのはやめよう
と言う事。馬鹿げた事を、と思わないでください。この結論を出すのもとっても
大変な位にX−windowに関して無知なんです。

まだ迷っているのはMotifを使うか使わないかと言う事。
で、とりあえず何かを始めないと、と思い、XtとMotifをこだわらずに(
これがまた問題なのですが)サンプルプロをアレンジして、自分の作りたいアプリ
に近づけようと努力しました。が、もーイヤと言うかダメと言う感じです。

Xlibだけを使用したサンプルプロにイベント処理(具体的にはPointerMotionMask)
があったので、そのサンプルを加工して、画面に現在のカーソル座標を表示させる
所はOKになったのです。でもXtで作り直そうと思って関数を探して(これも
大変な作業です 自分には)XtAddCallback、XtAddEventHandlerを使おうと思ったまでは
良かったのですが、パラメータ中のイベントマスク名が何を見ても一部しか載って
いないのです。PointerMotionMaskに相当するベントマスク名が・・・・・・・!!

これじゃー全然はかどらないよ!!って訳です。
やっぱり絶対にマニュアル不足ですかね?
それともマニュアル以前の問題ですかね?
どう思われます? 率直な意見を教えてください。
(でも「あなたには無理です」と言う究極の意見は勘弁してください。首が
かかっているんです)

愚痴になってしまいました。ごめんなさい。
ここしか頼るところ無くって、申し訳無いと思っているのについ書かずに
いられないんです。

また来週元気出して頑張るぞ!!   じゃあまたネ!!

Prev< No. 915〜920> Next  [最新発言に戻る] [過去ログ一覧]