|
68user様; どうも御教授、ありがとうございます。 現在、示して頂いたスクリプトを理解しようと勉強しています。しかし、 理解した上で改造するまでに、ちょっと時間がかかりそうなので(※)、 先にお礼を申し上げます。 ※ ->とか、selectとかの概念がまだ無いので、アルゴリズムがまだ 理解できずに停止しています。 また、進捗があったら、ご報告します。本当にありがとうございます。 # http://X68000.startshop.co.jp/~68user/tmp/bogus-proxy.pl は、 # ひょっとして、僕の質問のために作って頂いたものですか? # だとしたら、大感激です! ←違っていたらすいません。 Yuuki様; どうも貴重な情報、ありがとうございます。 早速ダウンロードして、68userさんのecho.plを実行したら、とりあえずforkは するみたいなのですが、残念なことに、forkしたとたんに、子プロセスが一般保護 違反を起こしてしまう(kernel32.dll)みたいです。多分、僕の環境が一般的じゃ ないので、それが原因じゃないかな、と思っています。現在、解析中です(←時間 がかかりそうですが・・・)。 因みにcygwin32はB20(full.exeのほう)です。perl -vは以下の通りです。 This is perl, version 5.005_62 built for cygwin 折角情報を頂いたのに、生かせなくって、申し訳ないです。 |
|
> selectとかの概念がまだ無いのでアルゴリズムがまだ > 理解できずに停止しています。 考え方は http://X68000.startshop.co.jp/~68user/net/echo-4.html と 同じです。モジュールを使うことで、ちょっとだけすっきりと書けます。 ここらへんは、そのうち web で解説を書くつもりです。 > ひょっとして、僕の質問のために作って頂いたものですか? 自分で使おうと思って、たまたま作ってました :-) 一応、GET だけはできるレベルのものを置いておきます。 http://X68000.startshop.co.jp/~68user/tmp/1st-proxy.pl shutdown あたりが とてもあやしい。 > cygwinに入っているPerlはforkが使えるそうです。 あ、そうなんですか。Windows 環境で perl を動かした ことがないので、適当に書いてしまいました。 |
|
http proxy は結構難しいですね。シグナルが飛んできたり、 コネクションを切断できなかったり、ファイルディスクリプタが 解放されなかったり…といったバグに苦しみながらも、3日かかって やっと書き上げました (でも HTTP/1.1 には未対応)。 # perl が panic で落ちるのを初めて見た。 でも、ネットワークプログラミングに関する理解力を試すには、 絶好の例題かと思いますので、ぜひチャレンジしてみて下さい。 # というわけで、完成版は出しません :-) |
|
いろいろ、ありがとうございます。早速ダウンロードして解析してます。 まだまだ、分からないことばかりですが、何とかふんばって作ってみます。 でも、68userさんが3日かかって作り上げたってことは、僕はどのくらい かかるのか、考えただけでも恐ろしくなります。いつになるやら・・・ もっとも、試行錯誤して自作するのは結構楽しいので、以下の、 >でも、ネットワークプログラミングに関する理解力を試すには、 >絶好の例題かと思いますので、ぜひチャレンジしてみて下さい。 ># というわけで、完成版は出しません :-) は、楽しみが残って嬉しいです。 >web で解説を書くつもりです。 楽しみにお待ち申し上げます :> # ># perl が panic で落ちるのを初めて見た。 # 僕も見られればいいなぁ、と妄想してます・・・ |
|
みなさんはじめましてこんにちは。 今日はじめてこのページを見たのですが、いやはや素晴らしい内容ですね・・ さんざん苦労して色々なところで得た知識(+α)がここに・・・(笑 私は最近Winでのネットワークプログラムに凝っているものです。 簡単なHTTPやSMTP、POP3クライアントはBorland C++ BuilderでWinsockを使い作成したこともあります。 さて実は質問があるのですが・・・ 現在DNSサーバーからのMXレコードの取得のプログラムを作っています。(リゾルバもどき?) メールアドレスに対し送信先のSMTPサーバーのアドレスを調べる簡単なクライアントです。 さてそこで問題となるのが問い合わせを行うDNSサーバーです。 私はダイアルアップでインターネットに接続しているのですが、接続した状態でwinipcfgを実行すると 「DNSサーバー」の欄にDNSサーバーのIPアドレスが入ります。 ダイアルアップを終了するとこの表示が消えます(当たり前かもしれません)。 このDNSサーバーのアドレスをプログラム内で取得したいのですが・・・一体どうやれば良いのでしょうか。 もし何かしらご存じでしたらお教え頂けるとありがたいです。 |
|
> このDNSサーバーのアドレスをプログラム内で取得したい こればっかりは OS に尋ねるか、設定ファイルを見るか、 ユーザに手動で入力させるか、くらいの手しかないんじゃ ないでしょうか。 winipcfg の出力を見るってのはダメですか? # 美しくないですけど。 |
|
こんにちは。いつも勉強させていただいています。 > DNSサーバーのアドレスをプログラム内で取得したいのですが RasGetEntryProperties で取得できるような気がします。 RASENTRY 構造体の ipaddrDns が、 > Specifies the IP address of the DNS server to be used while > this connection is active. だそうです。 NT で無事に取得できた覚えがあるのですが、かなり昔のことなので 記憶が曖昧です。 |
|
68userさん、kuwさん、お返事ありがとうございます。 >ユーザに 出来れば使う人にDNSサーバーを意識させないで(設定の必要なしに) 動かしたかったのです。。 >RasGetEntry おお、ありがとうございます。そうか、こういうのがあったのか・・・とヘルプを見ましたが、 NTのみとのこと・・(涙 実はダイアルアップでない、LAN内の端末でも使いたいという希望もあるんです。 おとなしくあきらめてユーザに設定してもらおうかな(^-^;; 本当にありがとうございました。 CGIのperlスクリプトなどについてもここで勉強させていただきます。 それでは失礼致します。 |
|
Windows は全く知らないのですが、 open(IN,"winipcfg|"); while (<IN>){ last if ( ($ip_addr) = m/(\d+\.\d+\.\d+\.\d+)/ ); } てな感じで取得できないんでしょうか? |