|
どもども。間違いなどありましたら、ぜひご指摘お願いします。 |
|
はじめまして。 「ネットワークプログラミング」読ませて頂きました。 説明、サンプルプログラム共に大変分かりやすく、 すぐに自分なりに応用することができ、大変為になりました。^^ ただ、一つだけ分からなかったことがあります。 HTTPクライアントでPOSTメソッドに対応しようとしたのですが、 $message = "name=test&mail=test&url=test&message=test\r\n"; $len = length($message); print SOCKET "POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n"; print SOCKET "REFERER: (略)/cgi-bin/mybbs.cgi\r\n"; print SOCKET "Content-length: $len\r\n"; print SOCKET "\r\n"; print SOCKET $message; とした所、実際にはPOSTされていないようなのです。 これは自分の掲示板(本のサンプルの真似ですが)に対してのPOSTですが、 REFERERチェックの入らない友人の掲示板でテストしてみてもPOSTされないようです。 ので、恐らくこちらのスクリプト側に誤りがあると思われるのですが…。 また、\r\nを\rや\nに変えても駄目でした。 どこが間違っているのでしょうか…?ご教授頂ければ幸いです。 ちなみにSunOS 5.6,Perl 5.004_04です。 |
|
# GET ができるのに POST だけができないのなら、外してますが… HTTP/1.1 では、Host ヘッダが必須になります。 POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n Host: 相手先のサーバ名\r\n Content-length: $len\r\n \r\n $message でどうですか? これが原因なら、HTTP/1.0 にすればうまくいくはずです。 また、サーバのレスポンスは「400 Bad Request」となっているはずです。 それでもダメなら、 #!/usr/local/bin/perl $|=1; sysread(STDIN, $input,$ENV{CONTENT_LENGTH}); print "Content-type: text/plain\n\n"; print "$input\n"; という、データを受けて表示するだけの CGI を相手に、いろいろ 試してみて下さい。 |
|
いつも拝見しております。みのるです。(環境:SunOS5.6) いきなりで大変心苦しいのですが、"passwd"が実行不可となってしまいました。 急に -r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd* -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd* -r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd* となりroot権限で"passwd"コマンドが利かなくなってしまい、 chmod 555 passwd でアクセス権を変更したのですが、 「passwd(SYSTEM): ○○○○ does not exist アクセス権が与えられていません。」とエラーになってしまいます。 シンボリックリンクにすればよいのでしょうか??? |
|
> -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd* これで正しいです。suid/sgid が立ってないと root 以外のユーザが パスワード変更できなくなります。とりあえず % chmod 6555 /usr/bin/passwd で元に戻して下さい。それでも動かないなら、そのときの症状を書いて下さい。 |
|
見逃してた… spawn系の関数は、MS-DOSに特有のものです。 |
|
下記コマンドでも同じエラーになりました。 昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。 昨日の時点では、同じノードでした。 # chmod 6555 /bin/passwd # ls -ali | grep passwd 313716 -r-xr-xr-x 1 root 96392 Nov 16 11:57 nispasswd* 313666 -r-sr-sr-x 1 root 96392 Feb 24 1999 passwd* 313717 -r-xr-xr-x 1 root 96392 Nov 16 11:57 yppasswd* |
|
mmさん、ありがとうございます。 UNIX系では、無いのですかねぇ〜。 残念です。 |
|
> 昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。 多分これが原因じゃないとは思うんですが、元に戻すには # rm nispasswd yppasswd; ln passwd nispasswd; ln passwd yppasswd です。で、どういうエラーなのかいまいち掴めないんですが、 > 「passwd(SYSTEM): ○○○○ does not exist アクセス権が与えられていません。」 ○○○○ には何が入るんですか? ユーザ名? もし NIS 使ってたり、shadow 化してるなら、原因を突き止めづらいですね。 まわりのサーバと /etc のパーミッションを見比べてみてはどうでしょう。 # こーゆーときは truss が便利なんだけど、suid プログラムには # truss 使えないのね…。 > spawn系の関数は、MS-DOSに特有のものです。 なるほど。ラクダ本の TCP サーバの例で sub spawn というのが あるんで、C の新しい関数で似たものがあるのかと思ってました。 |
|
始めまして。 「ネットワークプログラミングの基礎知識」 非常に面白かったです。 これからもがんばってください。>68userさん さっそく質問なんですが。 うちにあるLinux(Vine 1.1)のApache1.3.3は CGIが「自分 グループ 他人」の「他人」の権限で 動くんです。 ところがCGIが他人の権限で動くのはまずいらしい ので自分権限で動くようにしたいのですがどうのように 設定ファイルを書きかえれば良いのでしょうか。。 調べてみた所,User命令 (http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#user) とかでやるんでしょうか? |
|
> これからもがんばってください。 どもども。ありがとうございます。 > CGIが「自分 グループ 他人」の「他人」の権限で動くんです。 正確には、nobody 権限で動く、でしょうね。 > ところがCGIが他人の権限で動くのはまずいらしいので これは管理者の方針によります。web しか置いていないサーバでは 各ユーザ権限で動かす方が安全でしょうけど、学校のようにメールや いろんなデータが置いてあるサーバで各ユーザ権限で動かすのは 危険 (CGIに穴があるとメールなども全て見られてしまう)、 という考え方もあります。 > 調べてみた所,User命令 それは、例えば apache を nobody 権限でなく www (というユーザ) の権限で動かしたい場合に使います。 例えば locate のデータなども、nobody 権限で作成されるので、 本来 apache は nobody 権限でなく www などの専用アカウントを 作って、その権限で動かした方が安全です。 で、結論としては http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。 長々と語っておいてアレですが、僕は suExec を設定したことはないです。 上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。 ソース持ってきて % ./configure --enable-suexec とするのではダメなんでしょうか。いろいろ試してみて下さい。 これとは別に、cgiwrap というのを使う方法もあります。 ftp://ftp.win.or.jp/pub/network/www/cgiwrap これだと CGI だけ各ユーザ権限で動きます。コンパイルして /usr/local/apache/cgi-bin/cgiwrap にインストールして、 http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi とすると、/~username/cginame.cgi が username の権限で動きます。 httpd.conf に AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2" などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで 各ユーザ権限で動かすこともできますね。 ん〜長くなってしまった。 |
|
>なるほど。ラクダ本の TCP サーバの例で sub spawn というのが spawn ってどういう意味なんだろうと以前から疑問だったので調べたら、 魚などの産卵という意味なのですね。 MS-DOSの spawn は、exec(3)を真似たものだと思います。 MS-DOSの主なコンパイラで使えるようです。 exec系のライブラリもありますが、例えばBorland C++の場合 int spawnve(int mode, char *path, char *argv[], char *envp[]); で、mode に P_WAIT を指定すると、親プロセスはそのままにして、 空きメモリで子プロセスを実行し、終了後に親プロセスに制御を戻します。 mode を P_OVERLAY にすると、execve() と同じになります。 |
|
いつもありがとうございます。みのるです。 > 「passwd(SYSTEM): ユーザアカウント does not exist アクセス権が与えられていません。」の件。 リンク等、元に戻す前に、"passwd"コマンド復活しました。現在、以下の状態です。 313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd* 313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd* 313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd* ただ、原因はまだ解りません。trussが使えたので、見てみてはいるのですが、不明です。 ここで質問なのですが、"root"以外のユーザでも、コマンド書換(もしくはアクセス権付与)は 可能でしょうか?私どものサーバセキュリティ上に問題があるような気がしてなりません。 |
|
> trussが使えたので なるほど。root なら使えるんですね。 > "root"以外のユーザでも、コマンド書換(もしくは > アクセス権付与)は可能でしょうか? root 以外の一般ユーザが /usr/bin/passwd を書き換えたり、 パーミッションを変更させることができるか、ということですか? もちろん普通は不可能ですが、セキュリティホールがある場合は その限りではありません。 「passwd が効かなくなった=クラック」というわけでも ないので、しばらく様子を見てはどうでしょう。 |
|
>68user 1999/11/17(水) 18:50 >> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。 >正確には、nobody 権限で動く、でしょうね。 nobody権限というんですか。。 知らなかった(^^; >> ところがCGIが他人の権限で動くのはまずいらしいので >これは管理者の方針によります。 むむー なるほど。 ケースバイケースとかいうやつですか。 >で、結論としては > http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html >を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。 > >長々と語っておいてアレですが、僕は suExec を設定したことはないです。 >上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。 >ソース持ってきて > % ./configure --enable-suexec >とするのではダメなんでしょうか。いろいろ試してみて下さい。 suEXEC。これですか Apacheのバージョンアップとともに試してみます。 上手くいったら報告に参りたいと思います。 >これとは別に、cgiwrap というのを使う方法もあります。 > ftp://ftp.win.or.jp/pub/network/www/cgiwrap > >これだと CGI だけ各ユーザ権限で動きます。コンパイルして >/usr/local/apache/cgi-bin/cgiwrap にインストールして、 > http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi >とすると、/~username/cginame.cgi が username の権限で動きます。 >httpd.conf に > AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2" >などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで >各ユーザ権限で動かすこともできますね。 suEXECのインストールに失敗したらこちらも試してみます。 |
|
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html やっぱりこれって古いのね。英語版の方を見て下さい。 http://japache.infoscience.co.jp/apache/docs/suexec.html うちでも apache1.3.9 を入れてみましたが、configure,make,make install で 簡単にインストールでき (configureのオプションを付けたり、httpd.conf の 手直しはしましたが)、suExec もうまく動きました。 > nobody権限というんですか。。 わかっておられるかもしれませんが念のため書いておきますと、他人の権限で 動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、 ということです。 なんで nobody で動くかというと、httpd.conf に User nobody と書いてあるからです。 |
|
ちょっと時間が取れなくて 返事遅れました。(_ _) apache1.3.9は普通に? configure,make,make install でインストールできました。 suEXECも無事インストールできました。 CGIなどが各ユーザー権限で動いてました。 ありがとうございます。 >わかっておられるかもしれませんが念のため書いておきますと、他人の権限で >動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という >アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、 >ということです。 えぇ。その辺は大丈夫です。 |
|
ジェダイナイト、9面のシークレットエリア誰か教えて下さい。 |
|
ネットワークプログラミングの基礎知識、凄いです。素晴らしいです。 私のような無知にでもできてしまってちょっと怖いです。 (ほとんど切り貼り状態なんですが・・) FTPの項についてなんですが 「# FTPサーバに、子プロセスが待っているIPアドレスとポートの情報を渡す」 というのがありますよね。ftptras.plで初めて子プロセスは出てくるのでは。 それ以前の例示には「子プロセス」というコメントは必要無いのでは。 (ちょっとここで悩んでしまったので・・・。) |
|
> それ以前の例示には「子プロセス」というコメントは必要無いのでは。 どもども。ミスですね。直しておきます。 最初は fork しないと ftp クライアントは作れないと思ってました。 結局それは誤解だったので書き直したのですが、コメントの修正を 忘れてたようです。 # ftptrans で fork してるのも怪しい。ほんとに1プロセスで # できないのかなぁ? |
|
う〜〜ん。 ローカルのホスト名を得るにはどうすれば良いですか? 開いたSOCKETから手に入れる以外に適当な方法て無いですかしらん。 シェルコマンドは使わずにperlの関数だけで。 RFCの日本語訳ってほんと便利ですよね。感謝しながら読んでます。 PASVの返事て227だけみたいですね。あとは全部エラーみたい。 それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。 正規表現もむつかしいけど頑張ってるとこおろです。 |
|
> ローカルのホスト名を得るにはどうすれば良いですか? 試してませんが、とりあえず http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.24 http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq9.html#How_do_I_find_out_my_hostname_do ここらあたりでうまくいかないですか? > あとは全部エラーみたい。 > それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。 なるほど。ところで、こーゆーのがネットワークプログラムのヤな ところですよね。相手があってのものだから「これで正しいかどうか」 「完璧かどうか」がわからないという。 あと、真面目に作って配布でもするつもりなら http://hp.vector.co.jp/authors/VA002682/rfc1123j.htm も読んで下さい (もう読んでるかもしれませんが)。 # あと、data-connection の peer-port が 20(ftp-data) かどうかの # チェックもね。 |
|
68USERさんの中で最も得意なプログラミング言語はなんですか? |
|
elisp です。 …ウソです。perl か C ですけど、人に誇れるほどの レベルじゃないです。精進せねば。 |
|
色々ありがとうございました。 > 227だけみたい たしかに一番上の桁だけ見ろってRFCに書いてありました。 perlて俺のような無知な初心者にも優しい言語ですね! 構文規則が緩いっていうんですか、括弧とか適当でいいし。 とりあえず構文と関数のリファレンスさえあればなんとなく 出来てしまう。ありがたいことです。 まあ…そのおかげかperl使いな人も俺のような駄目パーラから 超スゴイ人まで腐るほど沢山居るらしくてperlなんか今更 「多少」使えても何の自慢にもならないみたいなんですが…。 でもでもこれからもperlで遊ぶぜえ〜。 じゃあさよならあ〜。 |
|
以前にPOSTに関して質問した者です。遅いレスですが…(^^; どうやら、ソケットに送るPOST〜$messageは、 個別に送った場合、途中の\r\nにHTTPDが反応してしまうようです。 なので、$sendとか、適当な変数に全部繋げて代入し、 print SOCKET $send; としなければならないようです。 HTTP/1.0を指定し、更にこの方法でやってみた所、POSTが成功しました。 ちなみに、HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。(全部そうとは限らない…かな?) |
|
> HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。 省略すると HTTP/0.9 になります。0.9 では GET 以外使えませんし、 ヘッダも送れません。例えば GET /~foo/index.html を送った時点で、サーバからレスポンスが返ってきます。なので、 > 途中の\r\nにHTTPDが反応してしまうようです。 これはそういうことじゃないでしょうか? なお、HTTP 0.9 で POST /~foo/index.html などとしようとすると、405 Method Not Allowed になるはずです。 |
|
というわけで、 > $sendとか、適当な変数に全部繋げて代入し、 > print SOCKET $send; としなければならない ということはあり得ないと思いますが、一応試してみたいので よろしければその掲示板の URL を教えて下さい。 |
|
おはようございます。 ネットワークプログラミングの基礎知識の C言語でHTTPクライアントを作ってみよう(2) ではperlと違いヘッダ部分が表示されてますよね? あれを本体部だけ表示するようにするにはどうしたらいいんでしょう? 色々やってみましたがどうも上手くいかなくて… 「UNIXの場合」はfgets関数をソケット読み出しにも使えますけど 某Windowsは勝手が違うんです。。 # どーみてもUNIXの方がやりやすい どんな感じかというのがhttp://www.nakka.com/inet/httpc.htmlの 赤系の色で 「/* サーバからデータを受信する処理 */」 とか書かれてる辺りです。 なんとなく見るとやりにくいのがわかるかと^^;; どうすればいいでしょうか? 思いついたのでいいですからレスください。 どうもアイデアが・・・・ |
|
while (1){ char buf[BUF_LEN]; int read_size; static int body_flg = 0; char *p; read_size = read(s,buf,BUF_LEN); if ( read_size > 0 ){ if ( body_flg ){ p = buf; } else if ( p = strstr(buf,"\r\n\r\n") ){ /* 空行はあるか? */ p+=4; /* \r\n\r\n の分先に進める */ read_size -= p-buf; /* サイズ調整 */ body_flg = 1; } if ( body_flg ){ write(1,p,read_size); } } else { break; } } こんな感じでどうでしょうか? |
|
あ、全然ダメじゃん。 > } else if ( p = strstr(buf,"\r\n\r\n") ){ buf は \0 で terminate されてないし、そもそも \r\n\r\n が1回で読める保証はなくて、ちょうど 境界にまたがってるかもしれない。 ま、そこらへんはよしなに。 |
|
pingコマンドでは、ホスト名を指定することによって、 そのホスト名(またはIPアドレス)との接続確認が できます。 これと同様に、そのホスト名(またはIPアドレス)の 特定のポート番号に対して、接続確認を行いたいの ですが、なにか良い方法ないでしょうか? |
|
実際に connect するのはダメなんですか? それ以外の方法はないと思います。多分。 |
|
本サイトはたまにではありますが参考にさせていただいております。 私も何か投稿させていただきたいと考えておりましたが、プログラミングサークル“ミレニアム”を立ち上げましたのでご紹介をさせていただきたいと思います。掲示板の案件と直接関係ないと思われますが容赦願います。 ミレニアムはサークルという体質を生かして医療・福祉・教育の分野で高機能・低価格ビジネスアプリケーション構築を目的としたプログラミングサークルであります。 現在、メンバーは15名程度でホームページを建設中であり、現在CGI等の組める方、VB、VC++、Delphi、Java、HTML、DTP(デザイン)の得意な方を募集致しております。メンバーは現職のプログラマー、DTP構築者、家庭の主婦などいろいろな方で構成されております。 ミレニアムに参加する条件としては本人に常識と責任感と好奇心が必要でありその他は問われません。 興味がございましたらメールにてお返事お願いいたします。 失礼いたしました。解からないことがありましたら私も投稿させていただくかもしれませんのでよろしくお願いいたします |
|
はじめまして、いつもHP見さしていただいてます 感謝 winsockを(c言語で)使ってチャットのプログラムを書いてみようと思ったんですけれど、マルチスレッドタイプのサーバーでクライアントにsend()する時(多分IPマルチキャストっ奴を使うと思うんですけど)のやり方について何か情報お持ちでないでしょうか? 接続されたクライアント全てに同報送信できるようにしたいんですけれど、よろしくお願いします。 後、勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか? まずいようだったら連絡下さい |
|
マルチキャストするなら、TCP じゃなくて UDP になると思いますが、 そこらへんの基礎知識はありますか? あと、IPv4 ではマルチキャストは optional なんですが、大抵の OS には実装されてるのかしら? で、僕も興味はありますが、そこらへんはまだ自分のものにしていないので、 説明できないです。 http://X68000.startshop.co.jp/~68user/net/link-book.html の 「UNIX ネットワークプログラミング第2版 Vol.1」 にとっても詳しく書いてありますので、よかったら買ってみて下さい。 # 今説明しようとすると、この本の丸写しになってしまいますので。 > \r\n\r\n が1回で読める保証はなくて、 ここらへんのことについても、この本に詳しく書かれています。 要は1バイトずつ読めばいいんですが、毎回 read しては遅くなるので 先にバッファに読み込んだり、read しているときにシグナルが飛んできた 場合の EINTR などなど。 8000円出すだけで、5万円分くらいの知識が得られます。おすすめ。 > 勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか? どうぞ〜。 |
|
>> $sendとか、適当な変数に全部繋げて代入し、 >> print SOCKET $send; としなければならない >ということはあり得ない 確かにそうでした…$sendに全部代入するのと HTTPバージョンを色々変えるのを同時に試してて混乱してたみたいです(汗) というわけで、やっぱり繋げる必要はありませんでした。ハイ。 また、HTTPバージョン省略も0.9扱いになっているようでした。 でも省略すると0.9にされるというのはちょっと驚き。 これはサーバ側でそう設定している為ですよね…?という事は… 今時0.9なんて使わないし…1.0や1.1をデフォルト設定にしているサーバもあるんでしょうか? |
|
HTTP のバージョン省略時は 0.9 であると RFC で決まっています。 http://X68000.startshop.co.jp/~68user/net/rfc.html というより、「省略したもののみを 0.9 とみなす」と言った方が正しいかな。 GET /index.html HTTP/0.9 というリクエストはできないようなので。 |
|
返事ありがとうございます。 マルチキャストについてですが winsock1,1ではoption扱いで正式サポートではなく 2,0ではサポートされてるようなんですが、いい情報がまだ得られていません。 もうちょっと調べて、うまくいったら報告します。 (今windowsでやってるんで68userさんはあまり興味ないかもしれませんが) |
|
はじめまして。 「ネットワークプログラミングの基礎知識」読ませていただきました。 HTTPの初心者のため、大変勉強になりました。 この度proxyサーバを使って、URLを取ってくるシステムを開発しているのですが、うまく動作しません。 GETのレスポンスで、ヘッダでは「200 OK」が返ってきているのに、ヘッダしか取出せません。どんな原因が考えられるでしょうか。 環境は以下の通りです。 proxyサーバ:NetscapeProxyServer 取出すURLのあるサーバ:Apache 1.3.9 |
|
> ヘッダしか取出せません。 - どういうリクエストを送ったのか - 環境 (Windows など) - 何を実行したのか (telnet でやったとか perl で書いたとか) - どの URL を試しても同じ結果になるのか - 実際のコードは (perl と C 以外わかりませんけど) などがわからないと何とも言えませんが、とりあえず telnet で proxy サーバに繋げて、 GET http://www.yahoo.co.jp/ HTTP/1.0 Host: www.yahoo.co.jp (空行) を試してみて下さい。 > (今windowsでやってるんで68userさんはあまり興味ないかもしれませんが) 最近はネットワークプログラミング自体に飽きてしまい、 3D にはまってたりします(^^; ちょいと紹介しときますが、参考にしたのはこのサイトです。 とてもわかりやすく書かれているので、興味のある方はぜひ。 http://www.cim.pe.u-tokyo.ac.jp/~mitani/Java/java3d/index.html # 長年の夢であったポリゴンをぐりぐり回すのが実現できてうれしい。 # 今はテクスチャ貼ったりシェーディングかける方法を模索中…。 ## ここらへんを解説してるサイトないかしら? |
|
返事ありがとうございます。 > - どういうリクエストを送ったのか > - 環境 (Windows など) > - 何を実行したのか (telnet でやったとか perl で書いたとか) > - どの URL を試しても同じ結果になるのか > - 実際のコードは (perl と C 以外わかりませんけど) 環境:UNIX 言語:C言語でproxyサーバにはsocket通信でリクエストを送っています。 具体的には以下の内容をsendで送っています。 GET http://www.yahoo.co.jp/ HTTP/1.1 Host:www.yahoo.co.jp (空行) ※proxyサーバが社内のマシンしかアクセスできない設定になっているので、 実際にはwww.yahoo.co.jpの部分は社内のhost名を指定しています。 >> ヘッダしか取出せません。 この後、もうちょっと調べてみると、 一度目のrecvでレスポンスヘッダが送られてきて、 二度目のrecvでエンティティボディが取出されることがわかりました。 NetscapeProxyServerの仕様なのでしょうか。 あと、レスポンスヘッダ文字列の大文字小文字ですが、 本などでは"-"の後の文字は大文字なのですが、 上記の環境で行うと小文字になります。 (例)「Last-Modified」→「Last-modified」など。。。 これもNetscape Proxy Serverの仕様なのでしょうか。 御存知のことがあれば教えてください。 |
|
> 一度目のrecvでレスポンスヘッダが送られてきて、 > 二度目のrecvでエンティティボディが取出されることがわかりました。 十分な量のバッファを用意して、十分なサイズを指定したからといって、 一度の recv で全てのデータを取り出せるという保証はありません。 これは read でも同じです。 http://X68000.startshop.co.jp/~68user/net/c-open.html の最後には > もし指定したファイルの長さが 600 バイトなら、 > 1回目のループ: read_size == 256 > 2回目のループ: read_size == 256 > 3回目のループ: read_size == 88 > 4回目のループ: read_size == 0 と書きましたが、これは相手がファイルシステムだからであって、 ソケット経由だと、 char buf[1000]; read(socket,buf,sizeof(buf)); としても、 1回目のread: read_size == 10 2回目のread: read_size == 20 3回目のread: read_size == 1 4回目のread: read_size == 0 などとなる可能性があります (この例ではデータ量は31バイト)。 要は IP パケットが細切れに送られてきたとき、read(recv) すると 要求されたサイズのデータが届くまで待つのではなく、そのときまでに 受け取っているデータを返すわけです。例えば echo サーバで、 $|=1; print(SOCKET,"a"); sleep(5); print(SOCKET,"b"); sleep(5); print(SOCKET,"c"); sleep(5); とすると、細切れなデータが送られるわけです。 > (例)「Last-Modified」→「Last-modified」など。。。 Netscape Proxy Server がわざわざ変換しているのか、 WWW サーバがそういうヘッダを返すのかはわかりませんが、 規格上は大文字小文字は区別されません (RFC のどこかに書いてあるはず)。 Last-Modified/Last-modefied/LaSt-MODIfied は同じように 扱わないといけません。 ちょっと用事があり、今日の夜から数日間 返答できませんのでよろしく。 |
|
> 一度の recv で全てのデータを取り出せるという保証はありません。 あ、これは read_size = recv(s,buf,sizeof(buf),0); のことです。 read_size = recv(s,buf,sizeof(buf),MSG_WAITALL); なら、全データを待ちますので、recv は1回だけ実行すれば OK です。 ただし MSG_WAITALL を指定しても、シグナル受信・コネクション切断時は、 全データを待たずに recv から戻ります。 |
|
ども、初めまして。とほほWWW−ラウンジから来ました。 「ネットワークプログラミングの基礎知識」が大変ためになります。 同様な事は書籍(ラクダ青本)にも書かれていますが、こちらがずっと解かりやすいです。 コンテンツ制作御苦労様です & 有り難う御座います。 ------------------------------ すっごく勉強になる解説のため、繰り返し読む事になるのですが、ベージ配色が、テキストが黒系統なく白系統であるため目が少々付かれます、またバックカラーとテキストの明暗が近寄っているのでこれも目に付かれる要因のような気がします。まっここいらは個人的嗜好の部分だと思います。 そういう事で、バックカラーとテキストカラーの指定を外部スタイルシートで指定させようと思い、その為には取りあえずコンテンツの階層を含めてローカルにダウンし、その後ローカル内で階層を跨いだHTMLファイルの修正をPerlで行う事にしました。 そういう事で、今、再帰的ディレクトリエントリサーチスクリプトを制作中です。。。。。 #いつも本題の前に、「あれやる、これやる」と時間がかかる私でした(笑) #ところで、68userさんは、とほほラウンジでの「B-cus」さんと同一な方でしょうか?、、、まっいらぬ詮索の範疇なのですが(^^; |
|
cksumコマンドについて知りたいのですが、 ��cksumコマンドはファイルに対してどういったチェックを行うで しょうか? �■淡生譴�らcksumコマンドを実行かけた時に、正常に終了したか、 もしくは、異常終了したかの判断は行えるのでしょうか? もし、行えるのであれば、詳細なエラー情報はどういったものが あるのでしょうか。 |
|
> ベージ配色が、テキストが黒系統なく白系統であるため目が少々付かれます であれば perl -pi.bak -e 's/BGCOLOR="#575757" TEXT="#FFFFFF"/BGCOLOR=white TEXT=black/' *.html などがお手軽です。 > まっここいらは個人的嗜好の部分だと思います。 前に「背景が黒/文字が白で読みやすい」と言われたこともあります。 人によって好みが違うので難しいですね。 > �´� 丸付き数字は機種依存文字なので、使ってはいけません。 > cksumコマンドはファイルに対してどういったチェックを行うでしょうか? http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/cksum/ を読んで下さい。なぜそういうコードになっているかを知ろうとすると ほとんど数学になってしまいますので、僕には説明できません。 > C言語からcksumコマンドを実行かけた時に、正常に終了したか、 > もしくは、異常終了したかの判断は行えるのでしょうか? system(3) の戻り値でわかります。0 なら正常、異常終了なら 戻り値を 8bit 右シフトしたものが終了ステータス (cksum が return したり exit した値)。 |
|
> cksum 日本語マニュアルを最初に紹介すべきでした。 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-3.3.0%2Fman |
|
>> �´� > 丸付き数字は機種依存文字なので、使ってはいけません。 そうそう、これ、研究室のFreeBSD環境では見えませんでした。 |
|
うーん、ちょっとめんどくさいけど、掲示板をいじって 機種依存文字をはじくようにしようかな…。 |
|
テストがてら、書き込み。wwwboard.cgi をちょこっと書き換えました。 ��Windows 機種依存文字を表示時に変換するようにしました。 本来、書き込み時に変換するのがベストですが、正しく変換できてるか どうか自信がないので、しばらくこれで様子を見ます。 ��二度書き防止機能を追加。最新10発言の MD5 を保存し、 重複していたら書き込みできないようにしました。 …と、あえて機種依存文字を使ってみたり。 今後、この掲示板では Windows 機種依存文字の使用を推奨します(^^; スクリプトはこちら。http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/wwwboard.cgi |
|
はじめまして、とほほさんのところからお伺いさせて 頂きました。はじめまして。 早速ですが、自動変換された、 �� の 「(機種依存文字なので自動変換しました)」 の部分、長くて本文が読みづらいので、たとえば変換した 部分を今の赤色のまま、このページの下の方とかその他の ページとかにリンクを張って、そこに (機種依存文字なので自動変換しました) とか書いていただければ、あっさりして見やすと思うの ですが、いかがでしょうか? ご検討頂ければ幸いです。 |
|
確かにおっしゃるとおり読みにくいので、こんなふうにしてみました。 いかがでしょうか。 |
|
# はじめましてが、引用符みたいになってしまって、むっちゃ恥ずかしい・・・ 早速直して頂いて、ありがとうございます。かなり見やすくなったと思います。 しかも、変換した場合だけ注釈が出る、というところが、かっこいいですね。 関係無いですが、目立たせたいがために、わざとWindows 機種依存文字を使う ことも出来そうですね。 あと、「HTTPクライアントを作ってみよう」の 「さらなる改善点・バーチャルホストに対応」について、質問があります。 http://www.host2.com/index.html に対して、 GET /index.html HTTP/1.0 host: www.host2.com:80 とリクエストする例がありますが、RFC2616の2045行近辺を当てはめると、 この例ではポート番号はいらないように思われますが、いかがでしょうか? HTTP/1.0では必要なのかな、と思ってRFC1945を読んでみたんですが、どう しても探し当れられなかったので、単なる私の勘違いかもしれませんが・・・ 宜しくお願いします。 |
|
ご意見ありがとうございます。ftp://ftp.iij.ad.jp/pub/RFC/rfc2616.txt には、 3.2.2 http URL If the port is empty or not given, port 80 is assumed. とあるので、「80 なら省略すべし」と決まっているわけではないです。なので :80 は付けても付けなくても構いません。 ただ、確かに「80の場合は省略してもよい」というのは書いておいた 方がよいと思うので、直しておきます。 # が、これは Host: に限ったことではなく、URL 一般の話なので、 # どこで解説したらいいのか悩むところだなぁ…。 |
|
御回答、ありがとうございます。 なるほど、無い場合は80が仮定されるんですね。 http://www.host2.com/ の、 www.host2.com と全く同じ文字を、 host: の後に書く必要があるんかな、と 思ったのですが、常に付けていても問題ないのですね。わかりました。 また分からないことがあったら、質問させて頂きますので、その時は宜しく お願い致します。 |
|
こんにちわ!このHPで最近勉強させてもらってます! ところで、FTPクライアントをC言語で書く予定は無いのでしょうか? 一応見よう見まねでこのHPのパールで書かれたソースから Cで書いてみたのですが、見事失敗! (具体的にいうと、getsocknameの使い方がmanでしらべても よくわからなかったのです(泣)できれば教えてください!) ですから、説明無しでもソースだけアップしてもらえたらな〜、 なんて自分勝手なことを思ってしまってます。(ごめんなさい) あるいは、CでかかれたFTPクライアントをアップしている HPがありましたら、ご紹介いただけると幸いです! |
|
こんにちわ、はじめましてあっちーといいます。 最近自分のパソコンにLinuxを入れました。 でもコマンドの使い方とか全然わかりません。 なんとxWindowを立ち上げてサウンドの設定までできましたが CD-ROMが外付けなためCDROMびアクセスできません。 CDプレイヤーを立ち上げるとerorrと出てきます。 mountの設定なのでしょうか? パソコンはSony VAIOでPCG505Sです。 CD-ROMはPCGA-CD5です。 いきなり掲示板に書いた内容がこんなですが もしよろしければどなたか教えてください。 これからLInuxとUnixの勉強を始めていきます。 よろしくお願いします。 |
|
Kaiさんゑ。 単にFTPが使いたい、てだけならば CPANに行けばPerl用のFTPモジュールが置いてあるなりョ。 |
|
> 具体的にいうと、getsocknameの使い方がmanでしらべても > よくわからなかったのです(泣) 僕も知りませんでしたが、昨日から調べていてやっとできました。 struct sockaddr_in local_socket; int len; long local_ip; len = sizeof(local_socket); if ( getsockname(socket,(struct sockaddr *)&local_socket,&len) < 0 ){ printf("getsockname failed.\n"); } local_ip = ntohl(local_socket.sin_addr.s_addr); printf("PORT %d,%d,%d,%d,%d,%d\n", (local_ip >> 24) & 0xff, (local_ip >> 16) & 0xff, (local_ip >> 8) & 0xff, (local_ip ) & 0xff, (ntohs(local_socket.sin_port) >> 8) & 0xff, (ntohs(local_socket.sin_port) ) & 0xff); # わかってから man を読むと、何が書いてあるか理解できるんだけどなぁ。 > あるいは、CでかかれたFTPクライアント FreeBSD あたりなら ftpコマンド http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/ftp/ fetchコマンド http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/fetch/ ftpライブラリ(fetchがリンクしている) http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/lib/libftpio/ などなど。FreeBSD 以外の環境でコンパイルしようとすると 苦労するでしょうから、ソースを読むだけにしておくのがいいでしょう。 今回参考にしたのは (結果的には丸写しになってしまったけど) http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/lib/libftpio/ftpio.c?rev=1.33 です。 > CDプレイヤーを立ち上げるとerorrと出てきます。 > mountの設定なのでしょうか? mount は必要ないです。音楽CDを聞くには、 「CD-ROMドライブに何曲目を鳴らせ」 という指令を送るだけで、後は CD-ROM ドライブが勝手にやってくれます。 で、お使いのプレイヤーの -device とか -d とかのオプションで、 CD-ROM ドライブのデバイスを指定できませんか? # FreeBSD なら xcdplayer -device /dev/wcd0c とか # xcdplayer -device /dev/cd0c ですけど、Linux は知りません。 |
|
サンプルも作ってみました。anonymous ftp で、 ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/README.TXT を取得します。 http://X68000.startshop.co.jp/~68user/tmp/ftp-client.c レスポンスコードは見ていないし、バッファオーバーランはするし、 RFCに準拠していないし、ファイルがなかったらデッドロックするしで、 バグだらけですが、改造してみて下さい。 |
|
おお!どうもありがとうございます!>68user様&むちなちゅぼ〜様 早速これを参考に頑張ってみたいと思います!!! ほんとうにありがとうございます!!! |
|
あんまり意味のない話題なのですが、、、、 Linuxのペンギン と FreeBSDのマスコット? (http://www.freebsd.org/gifs/freebsd_1.gif の右側のキャラクター) どっちが好きですか? 僕はFreeBSDの方なんですが。 FreeBSDといいつつLinux使ってるんですけどねぇ〜<僕 RPMのデータベース(?)が壊れて強制再インストールという事故にあった事があるので 今度OS乗り換える時は、68userさんおすすめのFreeBSDにしようかと。 |
|
> FreeBSDのマスコット? でーもん君 (daemon) です。手に持ってるのが fork で (fork(2) とかけている)、しっぽが (C言語の) ポインタだったかな。 > どっちが好きですか? うーん、描く人によりますねぇ。http://www.jp.NetBSD.org/ の でーもん君は憎たらしいし、Kondara Linux のペンギンは挑発的で かわいくないし (ペンギンにも名前あるんでしたっけ?)。 > おすすめのFreeBSDにしようかと。 誤解のないように言っておきますが、Linux を使ったことは ありません。なので、Linux と比べて FreeBSD がよい、という わけではないです。 ただ、あんなにディストリビューションが乱立した状況は 混乱の元であると思ってますので (30個くらいありますよね)、 あまり人には勧めたくないです。そういう意味で、まわりの人には 「Linux は使ったことはないけど、一本化されている FreeBSD の 方がいいんじゃないの?」 と言ってます。 あと、NetBSD やら OpenBSD なんかを使ってみるのもいいかも しれませんね。そこらへんを問題なくインストールできるなら、 少なくとも中級者でしょうから。 例えば NetBSD-1.4.1 (最新リリース) では、ユーザを登録する コマンドが標準で入ってないので、/etc/mastep.passwd を いじって pwd_mkdb することになります。 # もちろん登録コマンドをインストールする手もあります。 |
|
FreeBSD上で、Treeコマンドを使いたいのだけけれど、 どうしたらよいのだろう。 もし、よろしかったら教えて頂けないでしょうか? m(_ _)m |
|
tree ってどんなコマンドですか? # もしかして DOS の tree? |
|
> > FreeBSDのマスコット? > でーもん君 (daemon) です。手に持ってるのが fork で > (fork(2) とかけている)、しっぽが (C言語の) ポインタだったかな。 意味があるのかぁ〜 ナルホドー > > どっちが好きですか? > うーん、描く人によりますねぇ。http://www.jp.NetBSD.org/ の > でーもん君は憎たらしいし、Kondara Linux のペンギンは挑発的で > かわいくないし (ペンギンにも名前あるんでしたっけ?)。 確かに。(^_^) > NetBSDのでーもん やはり、僕はFreeBSDのでーもんがいいなぁ。 ペンギンの名前は知らないです。 > > おすすめのFreeBSDにしようかと。 > 誤解のないように言っておきますが、 (中略) > Linux と比べて FreeBSD がよい、という > わけではないです。 それはわかってます。 はっきりいって、OS換えるといってもぜんぜん決めてないのです。 始めはSolarisなんかにしようかと思ってたんですがこれは有料だそうで、、、、 その時、UNIXの部屋の > FreeBSD に乗り換えてみませんか? ;-) を見てFreeBSDにしようかと(^_^;;) あと、FreeBSDのでーもん君も気に入ったでポイントプラス。 |
|
はじめまして。UNIXに関して(その他もですが)ほとんど知識の無い私はかなり参考にさせていただいています。ありがとうございます。 いきなりで申し訳ないのですが、CGIの環境変数HTTP_REFERER についてお聞きしたい事が有ります。 HTTP_REFERER を使って、前ページ判断をさせているのですが、値の入り方が不安定で、思うように処理を行わせる事が出来ません。 68userさんのページでHTTP_REFERER はブックマークやURLの手打ちでは値が入らないと書いてあり、なるほどと納得したのですが、同じようにブックマークから飛んできても、値が入っている時と入っていない時が有るようなのです。それって、サーバの設定に問題があるのでしょうか。 つたない文章で、言っている事が良くわからないかもしれませんが、何かアドバイスをいただきたいと思います。お願いします。 |
|
> 始めはSolarisなんかにしようかと思ってたんですが > これは有料だそうで、、、、 Free Solaris などもありますが、まぁ入手経費はかかりますね。 >> FreeBSD に乗り換えてみませんか? ;-) > を見てFreeBSDにしようかと(^_^;;) なるほど。ということでしたら、ぜひ使ってみて下さい。 > HTTP_REFERER この値はあまり信用できません。ユーザがある程度自由にいじれる、 ということもありますが、IE ではブックマークや URL 直打ちで 飛んできた場合も、前に読んでいたURL (全然関係ない URL) が REFERER に入っていることがあります。 # 最新版では直ってるかなぁ? ではなくて、同じブラウザで、同じページを読んでいて、同じページに ブックマークで飛んでも、値が入っているときがあったり、入っていない ときがあったり、なんでしょうか。もしそうなら ちょっとわからないので、 http://www.wakusei.ne.jp/twn/wwwlng.cgi などで質問してみて下さい。 |
|
アドバイスありがとうございます。 教えていただいたURLに行って、色々読んでみました。 結局、HTTP_REFERER ってあんまり信用しちゃいけないんですね。 その値を使って、ページを振り分けるなんてことはあんまりしない方が良さそうですね。 そういう処理しようと思っていたんですけど、やめておきます(笑) アドバイス、本当にありがとうございました。 |
|
はじめまして 最近Perlでのネットワークプログラミングの勉強はじめたばかり初心者です。 PORT コマンドで送るPORT 番号がわからずにYahooで検索しまして こちらのサイトを発見しました。なんとアッサリ解決。ありがとうございました。 もうひとつわからない点がありまして,よろしければご指導ください。 FTPのユーザー認証で,USERコマンドを username@SERVER のような形で 送信しなければならないFTPサーバーがありまして,これがどうもうまくいきません。 ためしに, $username ='username@ftp.server.com'; print SERVER "USER $username\n"; といった形で送ってみたのですがどうしても530 User unknownと言われてしまいます。 どうしたら良いのでしょうか? 関係ないですが,私のPC98にはデーモン君シールがぺたぺたと12枚も貼ってあります(笑) 今は,Solaris7をAT互換機にいれてるのですが,FreeBSDに比べてなんか動作が重いです。 こっちは,P3-500なんですが。 |
|
> FTPのユーザー認証で,USERコマンドを username@SERVER のような形で > 送信しなければならないFTPサーバーがありまして, 本当に「USER コマンド」ですか? USER anonymous (あるいは ftp) PASS username@SERVER ではないですか? (つまり anonymous FTP) > 今は,Solaris7をAT互換機にいれてるのですが,FreeBSDに比べてなんか > 動作が重いです。 重いってのもありますけど、gzip とか tar とか gmake とか gcc とか tcsh とかをインストールするのがめんどくさいので、あんまり好かんです。 # CDE も嫌。 僕は (gcc以外は) ソースからコンパイルしてますけど、 みなさんはバイナリインストールしてるんでしょうかね。 |
|
うぉ,レスめちゃ早です。 >本当に「USER コマンド」ですか? USERコマンドみたいです。どうやらWindowsNT Serverにログインするときに username@SERVERの形になってるみたいです。 ちなみにマイクロソフトのFTPサーバーにアノニログインしたときのログです。 長くて恐縮ですが。 LOCAL -> Socket Connected waiting for Login sequence. REMOTE -> - You can connect to a SERVER by `user' command: REMOTE -> - ftp> user username@SERVER REMOTE -> - or by `cd' command (after logged in as an anonymous user): REMOTE -> - ftp> cd //SERVER REMOTE -> - Cache is enabled by default and can be disabled by `cd .' (toggle) REMOTE -> - This (proxy) service is maintained by 'goiken@sic.shibaura-it.ac.jp' REMOTE -> -extended FTP [MODE XDC] REMOTE -> COMMAND -> USER anonymous@ftp.microsoft.com REMOTE -> -- USER for anonymous@ftp.microsoft.com. REMOTE -> - ftp Microsoft FTP Service (Version 4.0). REMOTE -> - Anonymous access allowed, send identity (e-mail name) as password. REMOTE -> -- @ @ REMOTE -> ( - )/ -- connected to `ftp.microsoft.com' COMMAND -> PASS ********** REMOTE -> -This is FTP.MICROSOFT.COM. Please see the REMOTE -> -dirmap.txt for more information. REMOTE -> Anonymous user logged in. COMMAND -> SYST REMOTE -> Windows_NT version 4.0 私の場合,Soralis2.6の時はGCC以外ほとんど自分でコンパイルしました。 今は,サーバーが5台もあってOSを入れ替える度にいちいちコンパイルするのが面倒なので 全てバイナリをインストールしてます。 日本サンユーザーグループが 毎年バイナリ&ソースのコレクションをリリースしてるんでこれを購入してます。 たしか5千円くらいで買えるんです。フリーソフトを集めただけにしては高い気がしますけど(苦笑) |
|
> うぉ,レスめちゃ早です。 やらなきゃいけないことがたくさんあるのに、 こーゆーことばかりしてるので、全然仕事が進みません(^^; > REMOTE -> - This (proxy) service is maintained by 'goiken@sic.shibaura-it.ac.jp' > REMOTE -> -extended FTP [MODE XDC] これって ftp proxy だからではありませんか? ftp.microsoft.com には USER=anonymous PASS=user@server でログインできました。 でも、それなら $username ='username@ftp.server.com' で うまくいくはずですが、想像するに接続するホストとポートが 間違ってはいませんか? ftp proxy がうちのまわりにないので試せないのですが、 もし public な ftp proxy サーバをご存知でしたら教えて下さい。 > たしか5千円くらいで買えるんです。 そうなんですか。それは知りませんでした。 > フリーソフトを集めただけにしては高い気がしますけど(苦笑) 確かに :-)。ftp で配布すればいいのにね〜。 ところで BSD MAGAZINE 創刊号はダメダメだったけど、 第2号はなかなか濃くていい感じです。でーもん君シールは かわいくないですけど(笑) |
|
なんどもすいません。 >これって ftp proxy だからではありませんか? proxy経由で繋いでいる下のログは,他のFTPクライアントのものでした。 しかし,マイクロソフトのFTPサーバーには,こちらで配布されているftptransを 使っても問題なくログインできました。 実はftptranを使ってログインできなかったのは,全く別の所だったのですが そこを例として出すわけにはいかなかったので確認せずに,Microsoft.comを 例として出してしまいました。NTだから同じかなと思ったんですが・・・ それで,NTサーバーでログインできない所を探してきました。 よろしければこれで確認していただければと思います。 hostname:ftp.theglobe.com Username:Otamesi1 Password:Otamesi ここには,フリーソフトのFTP Explorerというクライアントで ログインできましたが,こちらで配布されているスクリプトで 試したところUSERコマンドの所で,エラーとなってしまいます。 >でーもん君シールはかわいくないですけど(笑) うっ,でーもん君はお嫌いですの? 私は,2年くらい前に秋葉原のぷらっとホームって所で,でーもん君のワッペン?を買っちゃいました。 他に牛さんとかペンギンさんのがあった気がしますが,でーもん君が一番売れてるって店員が言ってました。 あの頃は毎日,環境をいぢってた気がします。FreeBSDを使って何かするというより FreeBSDで遊んでました。今使ってるWindowsマシンなんて壁紙すらないんですがねぇ(^^) |
|
> hostname:ftp.theglobe.com > Username:Otamesi1 > Password:Otamesi FTP Explorer をインストールして試してみましたが、 530 USER unknown でした。FreeBSD と Solaris の ftp でも同じです。 この Username と Password は確かに合ってますか? 誰かログインできました?>読んでる方 (ってどれくらいいるのかな) # Username: Otamesi なら password 入力までいくんですが。 > うっ,でーもん君はお嫌いですの? http://www.freebsdmall.com/ を見るに、上のでーもん君は嫌いですが、 背景のはアリだと思います。 自己分析するに、妙に立体感のあるアメコミチックな絵が嫌なのかな? |
|
はじめまして。perl初心者です。 こちらのperlのページ、とてもわかりやすいですね。 全部保存して勉強しています。 簡単な改造しかできませんが、 おかげさまで、やりやすくなりました。 どうもありがとうございました。 リンクさせていただいてもよろしいでしょうか? |
|
> リンクさせていただいてもよろしいでしょうか? どうぞ〜。扱いが簡単でメンテしやすいリンク方法を考えている最中なので、 逆リンクは張れませんが (3ヵ月近く悩んでます)。 |
|
>530 USER unknown でした。 う〜,すみません。 微妙にUsernameとPasswordを間違ってしまいました。 ヘボン式でした。『h』が抜けています。 正しくは↓こちらです。 hostname:ftp.theglobe.com Username:Otameshi1 Password:Otameshi |
|
「UNIX の部屋」を更新しました。 http://X68000.startshop.co.jp/~68user/unix/ この掲示板やメールで頂いたご意見 (.xsession/complete など) は 全て反映させたつもりですが、もしまだ書き変わっていないものが ありましたら ご指摘下さい m(_ _)m > ヘボン式でした。『h』が抜けています。 おお、ほんまや。FreeBSD の ftp ではログインできるけど、 ftptrans や telnet ftp.theglobe.com ftp ではうまくいかない。 なんでだろう。調べておきます。 |
|
はじめまして。メールは何度か送ったけれど、掲示板にカキコする のはこれが初めてです。 「UNIXの部屋」を見させていただきました。説明が詳しく、非常に 勉強になります。ありがとうございます。completeコマンドに 関してはこれからじっくりと見ていこうかなと思ってます。 あと、~/.xsessionについて。パーミッション変更に関しては % chmod +wx ~/.xsession ではなくて、 % chmod u+wx ~/.xsession とした方がいいのでは?「+wx」だとすべての人に編集を許可すること になり、危険だと思います。(ある日ログインしたらいきなりデスクトッ プが変わっていた!なんてことに...) |
|
> ftp.theglobe.com 改行コードが LF だったからでした。CRLF (\r\n) にしたらうまくいきます。 よく見れば RFC にも CRLF にするように書いてありますね(^^; 直しておきます。 > telnet ftp.theglobe.com ftp ではうまくいかない。 今手元に現物がないので確かめてませんが、うまくいかなかったのは telnetx だったからだと思います。素の telnet だと CRLF を送るようですね。 > % chmod u+wx ~/.xsession どもども>skeleton M. さん +wx という形式だと umask の値で修飾され、その結果が実際の パーミッションになります。なので、umask 0 にでもなって いない限り 777 にはなりません。 u+wx と書かなかった理由ですが、基本的に umask の値を尊重した方が よいのではないかいう考えからです。学校などでは、大抵 user=a990001, group=a99 で umask 22 でしょうけど、user=68user,group=68user という 1ユーザ=1グループのサイトでは umask 2 です (ソフトを共同開発するとき などはこっちの方が便利)。 なので、 - umask を正しく設定する - chmod は相対方式で。 - パーミッションを公に公開したい場合は明示的に a+rwx,777 などとする という考えから +wx としたのですが、いかがなもんでしょう。 # 「とはいえ、明示的に u+wx とか 755 と指定する癖を付けた方がよい」という # 考えもあるんでしょうね。どっちがいいのかな。 |
|
どうも、ご無沙汰しております>お師匠様 いやぁ、仕事が忙しくてなんともなりませんです、はい。 で、いつもいつも困ったときに助けていただいて恐縮なんですが、 FROMから、 $len=$ENV{'CONTENT_LENGTH'}; read(STDIN, $st, $len); と、STDINでとってきたデータに日本語が含まれていた場合 %なんちゃらで置き換えられてしまいますよね。 これを元の日本語に戻したいんですけど、なにかいい方法が ありませんでしょうか? 毎回毎回FORMに対応した変数をCGI(Perl)内で 定義するのではなく汎用のCGIを作りたいんです。 cgi-lib.plを使ってkeys関数でハッシュから取り出すと、 送られてきたデータの順番がぐちゃぐちゃになるのを なんとかできればそれでもいいんですけどね(笑) |