|
にゃるほどー、わかりました。 非同期というのがユーザープログラムでわからない、 システムがキャッチする、 それを処理するのがコールバック、というのであれば納得できます。 あとはシグナルハンドラやTkのプログラムを勉強するなかで 勉強しようと思います。 どうもありがとうございます!>68userさん、hsjさん |
|
FreeBSDでネットワークプログラミング(カーネル)を しているのですが、たくさんの構造体が でてきてすこし混乱しています。 わかりそうでわからないので 構造体を日本語で具体的に説明しているHP、本などを 知っている方がいらっしゃいましたら どうか教えてください。HPの方がありがたいです。 乱文ですが、よろしくお願いします。 |
|
はじめまして、UNIX見習いです。 今まではke◯t氏の有名な掲示板や、ゆいチャ◯トのソース等を参考に Perlの勉強をしていましたが、68userさんのスクリプトを見て 目からウロコが落ちた感じでした。 変数のネーミングセンスも良く、可読性も高いスクリプトを初めて見て、 今まで参考にしていた人のスクリプトって何だったんだろうと思っちゃいました。 あと、Perlでネットワークプログラミングが出来るとは知らなかったし(爆) さっそくechoサーバのサンプルスクリプトを使わせてもらって勉強していますが、 IO::Socketを使ったechoサーバの場合、外部からのアクセスが出来なくて悩んでいます。 現在の状況は、 echo-server.pl・echo-server-fork.pl・echo-server-select.pl は外部からのアクセスでも動きますが、 IO::Socketを使ったechoサーバのサンプルスクリプトは全部 外部からのアクセスには反応しません。localhostからだと、ちゃんと機能するのですが…。 サーバの環境は、Perl 5.005_03 on Linux2.2.14で、 echoサーバのサンプルスクリプトは全てデフォルトのまま設置です。 IO::Socketを使った場合、なぜ外部からのアクセスが出来ないのか 原因が分からずに悩んでいます。 あと、標準モジュールの使い方の学習で効果的なリソースって何でしょうか? 私の手持ちの書籍では、標準モジュールの利用に関して載っていないので 何かオススメの書籍、もしくはネット上のリソースで参考になるところがあれば 紹介していただきたいと思います。なるべく日本語のリソースで(←贅沢かな?) 長々と書いちゃってすみませんが、ご指導の程、よろしくお願いいたします。 |
|
こんどは canna が かんじに へんかんしてくれなくなりました。やれやれ、 こどもみたいな ぶんしょうだ。 > IO::Socketを使ったechoサーバのサンプルスクリプトは全部 > 外部からのアクセスには反応しません。 おお、ほんとだ。というわけで しらべてみたところ、 LocalAddr => 'localhost', がわるいです。 ふつう、マシンには じぶんじしんあてへのインタフェイスがあります。 これをループバックとよび、127.0.0.1 という IP アドレスがふられて います (127.0.0.1 がループバックという きまりはありません。 (IPv4 では) ただのかんれいです)。 そして、インターネットにつながっているならば、さらにインターネットへ つながるインタフェイスがあります。これには 210.249.139.22 のような グローバル IP アドレスがふられています。 つまり、つうじょう、マシンには 2つのインタフェイス/IP アドレスが あるわけです。 たいていのサーバプログラムは2つのインタフェイスを くべつしません。 しかし、くべつできるような しくみは いちおうあります。それが http://X68000.startshop.co.jp/~68user/net/func.html#bind のさいごにかいてある、bind でどちらの IP あどれすをつかうかを えらべる、ということです。 で、LocalAddr => 'localhost' は、この bind のひきすうに IP アドレス (localhost にたいおうする 127.0.0.1) を あたえたのと おなじいみです。 これは LocalAddr をしていするときと しないときで、それぞれ netstat -an をじっこうすると わかりやすいでしょう。 tcp 0 0 127.0.0.1.5000 *.* LISTEN (LocalAddr してい) tcp 0 0 *.5000 *.* LISTEN (LocalAddr していない) と、LocalAddr をつけると、127.0.0.1:5000 しか みていないのが わかります。だからローカルホストからしか せつぞくできなかったわけです。 > 今まではke◯t氏の有名な掲示板や、ゆいチャ◯トの > ソース等を参考にPerlの勉強をしていましたが、 ゆいチャットはしりませんが、kent とか rescue などと くらべられるのは しんがいです :-) まぁ、こっちもそんなにレベルが たかいわけではないので (こんかいの ようなミスもあるし)、これいじょうは えらいひとからの つっこみが こわいので いいません。 ちなみに perl って、しょしんしゃでも なんとか うごかせるから でしょうか、うそだらけのページがおおいですね。ぼくがぜんめんてきに しんらいしているサイトは http://www.context.co.jp/perlnews/ http://www.din.or.jp/~ohzaki/perl.htm の2つだけです。 > あと、標準モジュールの使い方の学習で効果的な > リソースって何でしょうか? perl モジュールガイドとかいうほんが しゅっぱんされていません でしたっけ? しょうさいは わかりませんが。 ただ、もくてきのモジュールがわかっているならば、perldoc を ながしよみして、けっこうなんとかなるかとおもいます。 よみにくいぶんしょうで しつれいしました。LocalAddr の ぶぶんは、じかいこうしんじに さくじょいたします。 @yuji さん カーネルの TCP/IP まわりのこうぞうたいのことですよね? ぼくもしりたいです。だれかおしえて。 |
|
そうなんですよ。なかなかネットワークの構造体について わかりやすい説明って詳しいないんですよね。 特にFreeBSDの場合は・・・ 誰か知っていたら教えてください。 |
|
残念ながら、僕は知らないです。僕の持っている UNIX カーネル 関連の書籍にも、TCP/IP は載ってませんでした。 BSD Magazine No.4 に、IP の話が少し載ってますが、 構造体の説明はありません。 というわけで、解説書いて(笑)>yuji さん |
|
そうですね。つくってみますか! っていってもなかなか・・・ 理解した分だけ作っていくのは いいかもしれません。あとあと 役に立ちますし。 ええ、BSD Magazine No.4 に書いてありましたね。 どのような流れでデータが動いているのかは 理解するのに役に立ったと思います。 |
|
LocalAddr => 'localhost'を削除したら、外部からのアクセスに反応することを こちらでも確認できました。 #しかし普段からLinux使ってるのにnetstatしなかった私って…ごめんなさい(汗) それから、Perldocというものが自分のマシンに入っていることも実は知りませんでした。 昨日からネット上で検索かけまくって、やっとPerldocの存在を知りました。 さっそくperldoc -m IO::Socketして読んでみます。 68userさん、早急な解答ありがとうございました。 |
|
はじめてここに書きこみさせていたただきます よろしくお願いします。 今メーリングリストを開設しようと思っています サーバーはLinuxで aliasesファイルに転送先のメンバーリストファイルを指定したのですが 開かず、悩んでいます ----- The following addresses had permanent fatal errors ----- <aki@my-member.com> :include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list (expanded from: <aki@my-member.com> ) ----- Transcript of session follows ----- 550 :include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list... Cannot open /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list: Group writable directory 554 <aki@my-member.com> ... aliasing/forwarding loop broken -------------------------------------------------------------------------------- のようなメッセージが帰ってきます。 ファイルのパーミッションは644です すでに1週間と一日・・・私くじけそうです・・・ もしわからる方いらっしゃいましたらお願いします。 |
|
> Group writable directory グループが書き込めるディレクトリ、だから危険なので 実行するのはや〜めた、と言ってます。 |
|
68userさんありがとうございます パーミッションをいろいろ試したのですが・・・開きません ファイルやディレクトリのパーミッションを もしよろしければ、どうすればファイルを開いてくれるのか教えてください よろしくお願いします・・・ |
|
すみません、私のミスでした・・・ ディレクトリのひとつのパーミッションがおかしかっただけです う〜んこんなこと気づかないなんて・・・ ありがとうございました〜 |
|
質問させてください。 perlで、ログをファイルではなくDBMで管理するBBSを作っています。 ところが、プロセス間でDBMの排他制御を行う方法が分かりません。 もし知っていたらご教授ください。 おねがいします。 |
|
申し訳ございません もう一度同じような質問させてください メーリングリストを作っていまして パイプを通してプログラムに渡したのですが ----- Transcript of session follows ----- sh: mysite-filter not available for sendmail programs 554 | "/usr/local/lib/mailing-list/mysite-filter"... Service unavailable のようなメッセージがきまして メールがプログラムに渡っていません・・・ この場合、どのようなミスが考えられるのでしょう? 多分初歩的なミスだと思いますが よろしくお願いします・・・ |
|
はじめまして。 perlでradiusの認証クライアントを作成したいのですが、 perlのモジュールでAuthin::radiusというものがあって、 それを使用して作成したのですが、二重ログインしようとしてしまい、 二重ログインは不可の設定にしていますので、ログインできません。 と言う経緯で、1から作成しようと思います。 Sokcetのモジュールで、ポートを指定して、 ソケットを生成するのは一緒だと思うのですが、 radiusサーバに送るリクエストをどのように記述していいのかがわかりません。 radius サーバはDTC Radius Ver 2.03です。 どなたかご存じの方は教えていただけないでしょうか。 よろしくお願い致します。 |
|
ミワと申します。 シグナルについて質問させてください。 レンタルサーバーなどでは、スクリプトが一定時間動き続けていると、 TERMシグナル?が飛んでくるよ と聞いたことがあるんですが (クライアントがブラウザを閉じたり、中止をしたときも) 私が使っているサーバーで実験してみたんですが 全く飛んできませんでした。 無限ループとかになってしまった場合どうするのか など心配になってきたんですが(telnetでkillすればいいんですが)、 これはサーバー側の設定がなにかあるんでしょうか? #環境は Cobalt Linux & Apache です。 お分かりになる方、ご教授お願いします。 #実験で使ったPerlスクリプトはここにあります。 http://www.offside.ne.jp/~icon_store/sig/signal.txt |
|
TCP/IPの構造体についてなら http://www.kurasc.kyoto-u.ac.jp/plasma-group/data/misc/doc/koala にて概要はつかめるのではないでしょうか。 ただ,話がUNIXよりなのは fj.lecture だからかしらん。 |