68user's page 掲示板

Prev< No. 661〜726> Next  [最新発言に戻る] [過去ログ一覧]
No. 661 # ブタダヒカル 2000/01/16 (日) 23:54
はじめまして!!
すごいです、68userさん。いろいろ勉強になります。

じつは、いま、VC++で、HTTPクライアントプログラムをHttp1.1で
書いてるのですけど、Transfer-Encoding: chunked
で送られてくるボディのデコード方法がわかんなくて困ってます。

もし、ご存知でしたら、すこしアドバイスをいただきたいのです。
よろしくお願いします。

No. 662 # へにか [URL] [E-mail] 2000/01/17 (月) 08:16
この間は、どうもありがとうございます。
お腹が空いたので、cookieでもいただきにきました・・・
mailとurlはダミーのを入れてみます。

No. 663 # へにか [URL] [E-mail] 2000/01/17 (月) 08:20
cookieをおいしく頂きました。
ご報告まで。
※ コレラノ投稿、問題カ゛アリマシタラ、削除シテイタタ゛イテモ結構テ゛ス。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 664 # Yuuki [E-mail] 2000/01/17 (月) 12:01
掲示板がパワーアップしましたね。
今、投稿する時に
へにかさんのクッキーを食べちゃってるみたいなんですが、なんでだろう?
名前:へにか
Email:test@test.test
URL:http://www.infoseek.co.jp/
と入ってました。


> でもまぁ、3.1/3.2/3.3 がついてくるインストール本を買って、
> UNIX USER 付録の CD-ROM から 3.4R を入れても構わないと思います。
UNIX USER 12月号にFreeBSD3.3Rがついてるのでこいつを注文することにしました。
(http://www.softbank.co.jp/~unixuser/index/1999/9912.html)
3.x付のインストール本って2.xのより少なかったです。
新しいから多いかと思ったのに、予想外:-)

No. 665 # mm [URL] [E-mail] 2000/01/18 (火) 03:10
うーん、cookieと半角カナ以外の改造点が分からないなぁ(^∪^;
ハンドルの前の○のリンクは何だろう∫?
            平成(12)年I月�煽覇�

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 666 # <FONT COLOR=red>mm</FONT> [URL] [E-mail] 2000/01/18 (火) 03:14
>〓〓
は、i と viii のつもりでした。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 667 # skeleton_M. [E-mail] 2000/01/18 (火) 11:47
> UNIX USER 12月号にFreeBSD3.3Rがついてるのでこいつを注文することにしました。
UNIX USER 2000年3月号にはFreeBSD 3.4が収録予定だと思います :-)

No. 668 # 68user [URL] [E-mail] 2000/01/18 (火) 22:41
> Transfer-Encoding: chunked
全然わかりません。RFC 読んでも何のことやらさっぱりなんで、
どなたか教えて。

> 今、投稿する時に へにかさんのクッキーを食べちゃってるみたいなんですが
ああ、そうですね。確かに前の人のが入ります。バグですね (^^;

> <FONT COLOR=red>mm</FONT>
ああ、バグですね。これ、直したつもりだったんだけどなぁ。

> i と viii のつもりでした。
あああ、バグ…ですかね? 書き込んだ i は (SJIS で)
0xEEEF ですか? それとも 0xF940 ですか?

ところで、http://X68000.startshop.co.jp/~68user/tmp/knj-tut.txt の
2D30/874F の行は、うちでは
    2D30/874F 丸16丸17…I II III…VIII IX X XI(行末)
と見えるんですが、Windows でも同じですか? XI なんてフォントあります?
# うちのフォントは機種依存文字部分を追加したものなのですが、
# 追加時にミスってしまったのかもしれない。

> うーん、cookieと半角カナ以外の改造点が分からないなぁ(^∪^
ログ形式を
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard-log/lall
としました。初回の出力時は
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard-log/cache/
のようにキャッシュファイルを作成し、次回はタイムスタンプをみて、
キャッシュが有効なら、前回作成したキャッシュを Content-Length と
Last-Modified を付けて出力します。

# だから、前の投稿者への FORM 内容が残ってしまったと。

No. 669 # yuichi [E-mail] 2000/01/19 (水) 11:40
ネットワークプログラミング勉強させていただきました。

ところで現在、無謀?にもperlで自作proxyサーバを作っているのですが
ローカルIPの接続はできるのですが、Internet側(gateway)の環境越
がうまく動かないのですが。
perlでのソケット通信においてなにかgateway等の設定があるのでしょうか?
*HTTPサーバ上でperlを動かすぶんにはhttpサーバが勝手にgatewayを越え
て接続してくれるので問題なかったのですが。httpサーバではなく直接
linuxに常駐するとうまく動きませんでした。
だれか知っている方いませんか?

*接続webサーバのIP取得にはgethostbyname関数を使用しています。
  自作proxyサーバはマルチスレッドにおいてlinuxサーバ側で常
  駐させ、クライアントのプロキシ接続要求をPort:8080で監視さ
  せています。

  ちなみにHTTPコネクションの参考にしたものは以下のサイトです。
  興味のある方は参考に。

  URL:http://www2d.biglobe.ne.jp/~gama/cgi/index.cgi

No. 670 # yuichi [E-mail] 2000/01/19 (水) 12:50
下の書き込みの件、解決しました。

当方のlinuxサーバの設定ミスにより正しくgateway設定がされていなく
見つけられなかったようです。(初歩的ミスです)
よって正しくGatewayがサーバ上で設定されていれば、gethostbyname関数
において正常に相手サーバのIPアドレスは取得できました。


これで自作Proxyは動くようになりましたが、なぜか遅い!
サーバ側への負荷はあまりなさそうなのですが画像(gif・jpg)
のデータ取得が遅く、ソケットから必ず最後のバイト読み込みに
おいてリターンがなかなか返ってこないのです。
画像データの取得にやり方があるのでしょうか?

*完成したら公開しますので勉強材料にでもしてください。
  なかなかPerl Proxyは公開されていませんので。

No. 671 # mm [URL] [E-mail] 2000/01/19 (水) 19:24
>0xEEEF ですか? それとも 0xF940 ですか?
�世蓮�0xFA40 です。0xF940 にはなにもありません。

>と見えるんですが、Windows でも同じですか? XI なんてフォントあります?
分かりやすいように、キャプチャしてみました。( XI はありません)
http://www2s.biglobe.ne.jp/~cru/test/moji01.gif
knj-tut.txt によれば、これがNEC PC-98シリーズの依存文字になってるようですね。
ウチのパソコンは、このNEC PC-98シリーズなので、PC/AT互換機でも同じように
見えるかどうかは分かりません。

ついでに、0xEEF0 や 0xFA40 付近も含めてキャプチャーしてみました。
↓オリジナルHTML
http://www2s.biglobe.ne.jp/~cru/test/moji02.html
↓ブラウザで見たキャプチャ画像
http://www2s.biglobe.ne.jp/~cru/test/moji02.gif


>のようにキャッシュファイルを作成し、次回はタイムスタンプをみて、
むむー、まだ理解してないけど、なんかスゴいことやってる(苦笑)

No. 672 # 68user [URL] [E-mail] 2000/01/19 (水) 21:39
> 画像データの取得にやり方があるのでしょうか?
ん〜、ソースを見ないことには何とも言いがたいです。

> 0xFA40 です
ありゃ、
    http://www2d.biglobe.ne.jp/~msyk/charcode/kisyuizon/115-116ku.html
の「1バイト目がF9」という記述が間違っているのかな? このページには
とてもお世話になっているので、間違っているなら feed back しておかないと。

で、115〜119区についても自動変換するようにしておきます。

> このNEC PC-98シリーズなので
98 の機種依存文字と言っても、Windows を動かすと PC/AT 機と
同じなんでしょうかね。

No. 673 # mm 2000/01/19 (水) 22:35
>の「1バイト目がF9」という記述が間違っているのかな?
文字コード表くらい、どこかにあるだろうと思って、検索したけど、意外とないですね。
ウチの漢字コード表では、間違いなく115区はFAになってます。

http://www.vector.co.jp/soft/win95/util/se102214.html
>IBM拡張文字区点コード(換算)で115区〜119区(FA40-FC4B)
という記述もありました。

やはり、
http://www2d.biglobe.ne.jp/~msyk/charcode/kisyuizon/115-116ku.html
http://www2d.biglobe.ne.jp/~msyk/charcode/kisyuizon/117-118ku.html
は、1ずつずれてるんじゃないかなぁ…
http://www2d.biglobe.ne.jp/~msyk/charcode/kisyuizon/119-120ku.html
のFCはOKかな

>Windows を動かすと PC/AT 機と同じなんでしょうかね。
うーん、よく分かりません(苦笑)

No. 674 # goosan [E-mail] 2000/01/19 (水) 23:19
0xFA40という文字ですが、私の環境(PC/AT+Win95)では、
この掲示板上では i とは表示されず、0xEDBEと同じ文字として表示されます。
同様に viii も0xEDC5と同じになっています。
この掲示板の漢字コードはEUCのようですが、EUCの2バイト漢字の範囲は
JIS-X0208と同じで、これはシフトJISで0xEFFCまでに対応しているので、
それ以降のシフトJISコードはEUCに変換できません。
するとこの場合は、0xFA40というコードがEUCに変換されずに素通りして
しまい、その第1,2バイト目のそれぞれのトップビットを取った
0x7A40がたまたまシフトJISの0xEDBEに一致していたためと思われます。

No. 675 # mm 2000/01/20 (木) 01:08
>0x7A40がたまたまシフトJISの0xEDBEに一致していたためと思われます。
ちゃんと理解してませんが、Shift-JISの0xEDBE(日偏に春の文字)は、EUCのソース上では、
0xFAC0になってますね。
これは、0xFA40が変換されずに、第2バイトのMSBが立っただけってことかな?

No. 676 # 68user [URL] [E-mail] 2000/01/20 (木) 01:09
いえ、違うと思います>goosan

この掲示板では、入力文字列を jcode::convert を使って EUC に
変換し、EUC コードで機種依存文字のチェックをしています。

で、jcode::convert は、SJIS の 0xFA40 (i) を 0xFAC0 に
変換するようですが、これは多分間違った結果ではないかと思います。
# EUC の扱える JIS X 0208 は 94区までしか定義されていないので、
# 間違っているという表現は不適切かもしれませんが。

で、EUC の 0xFAC0 は
    http://www2d.biglobe.ne.jp/~msyk/charcode/kisyuizon/89-90ku.html
の `日春' という文字に相当するので、その文字が表示されている、
ってことだと思います。

で、mm さんはそれをコピーして
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=666
に書かれたので、`日春'`が自動変換され、「〓」となってしまった
ということではないでしょうか。


さて、困ったなぁ。SJIS で 95区以降 (JIS X 0208 で
規定されていない部分) の入力があった場合どうするべきか。
…と悩んで調べてみたところ、
    http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
> 注記:
> ...
> 3.NEC選定IBM拡張文字は,SJISから日本語EUCへの変換においては,
>  SJISでいったん IBM拡張文字に 変換してから日本語EUCに変換する.
    http://www.opengroup.or.jp/jvc/cde/ibmext-table.html
のように、補助漢字 (JIS X 0212) に置換するのも一つの解な
ようですね。ただ、少なくとも FreeBSD (X Window System) では
JIS X 0212 フォントはオプショナルですし、Windows ではまず
JIS X 0212 は使えないでしょうし (SJIS では JIS X 0212 は
使用できない)、現実的ではないかもしれません。

結局 jcode.pl を修正し、さらにブラウザが Windows なら
SJIS で出力、UNIX なら EUC で出力、ってことになるのかなぁ。
# …なんかどんどん深みにはまっていってるような気が (笑)

ところで、仮に mm さんが 91/92 区の i/viii を使っていたら
自動変換されたはずなのですが、mm さんがお使いの IME は
普通に i/viii を入力すると 115/116区のコードになって
しまうんでしょうか?

No. 677 # mm 2000/01/20 (木) 03:19
>普通に i/viii を入力すると 115/116区のコードになって
>しまうんでしょうか?
普通かどうかはよく知らないんですが、「いち」を漢字変換しても
大文字のIしか出て来ないので、MS-IMEの「漢字辞典」というウインドウを開いて、
「特殊文字」タグの中から小文字のローマ数字を選ぶと115区の��(i)が入力されます。

この「特殊文字」タグは、8区の罫線や13区の記号の一覧になっているんですが
(大文字のローマ数字も13区のものです)、小文字だけが115区になっています。
文字コード表というアプリケーションを使う以外に、92区の�颪鯑�力する方法
を知りません…ホントに私が知らないだけかも知れませんが(苦笑)

>で、mm さんはそれをコピーして
ピンポ〜ン!
後で調べようと思って、忘れてました(苦笑)


>で、jcode::convert は、SJIS の 0xFA40 (i) を 0xFAC0 に
>変換するようですが、これは多分間違った結果ではないかと思います。
jcode.pl の変換部分って、覗いたことなかった(苦笑)

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 678 # goosan [E-mail] 2000/01/20 (木) 09:12
そうですね。EUCだから逆ですね。JISにこだわり過ぎてしまったようです。

>この掲示板では、入力文字列を jcode::convert を使って EUC に
>変換し、EUC コードで機種依存文字のチェックをしています。
フォームが送出したデータがどういう漢字コードだったかという点も
気になります。一般にはフォームのあるページと同じ漢字コードに
なることが多いようですが、仮にそうだとすると、キーボードから
フォームに入力した際にはSJISだったのが、フォームがデータを
送出する際にはEUCに変換され、jcode'convert()が入力漢字コードの
自動判定をする際に多数決の論理でEUCと判定され、私がjcode.plを
見る限りではEUC->EUCではカナの半角<->全角変換をしない限りは
何もしないようなので、jcode.convert()でMSBが立ったことは
有り得ないようです。

No. 679 # goosan [E-mail] 2000/01/20 (木) 09:17
0xFA40がEUCに変換される際にどういう挙動をしたかという点も
問題です。書き忘れていました。

No. 680 # 68user 2000/01/20 (木) 15:24
> 補助漢字 (JIS X 0212) に置換するのも一つの解なようですね。
おっと、大きな勘違い。

この掲示板は (というより EUC-JP は) 13,89〜92 区を扱えますが、
115〜119 区の機種依存文字は全て13,89〜92 区の方にも含まれて
いるので、jcode.pl をいじって、SJIS の 115〜119区を
13,89〜92区に変換するようにすればいいわけですね。

> jcode::convert は、SJIS の 0xFA40 (i) を 0xFAC0 に
> 変換するようですが
昨日は確かに手もとで確認したつもりだったのですが、
今日試してみると jcode::convert(*,'euc') で、
SJIS の 0xFA40 が 0x13C0 (たぶん) になってしまいました。

> フォームが送出したデータがどういう漢字コードだったか
> という点も気になります。
ここも含めて再度チェックしておきます。

> 普通かどうかはよく知らないんですが、「いち」を漢字変換しても
なるほど。115〜119 区への対応は必須ですね。ありがとうございました。

> 間違いなく115区はFAになってます。
これは向うに連絡しておきます。

No. 681 # goosan [E-mail] 2000/01/20 (木) 17:43
>昨日は確かに手もとで確認したつもりだったのですが、
>今日試してみると jcode::convert(*,'euc') で、
>SJIS の 0xFA40 が 0x13C0 (たぶん) になってしまいました。
私が試してみると、0x13A1になりました。

0xFA40が自動判定でSJISとされるのは間違いないと思います。
>$re_sjis_c = '[\201-\237\340-\374][\100-\176\200-\374]';
は0xFA40を含みますから。
一方、
>$re_euc_c = '[\241-\376][\241-\376]';
では含まれません。

No. 682 # 68user 2000/01/20 (木) 18:25
あ、そうです。スクリプトが手元にないのでアレですが、
多分 0x13A1 でした。はて、昨日見た 0xFAC0 は幻であったか?

一番簡単なのは、require 'jcode.pl' して、jcode::init で
初期化された後に %jcode::s2e に115〜119区相当のテーブルを
追加することかなぁ。
# jcode.pl はいじりたくないからなんだけど、(コーディング作法
# としては) よくない…ですよね。

No. 683 # goosan 2000/01/20 (木) 20:02
私の場合、
---
#!/usr/local/bin/perl
require "jcode.pl";
while(<>) {
    &jcode'convert(*_, "euc");
    print;
}
---
この程度のスクリプトです。要は大したことやっていません。(^^;

入力が
000000 FA 40 0A
の時に、スクリプト名 kconv.pl として
% ./kconv.pl test > test.e
とした結果、
000000 13 A1 0A
という出力になりました。

No. 684 # トロピカル 2000/01/21 (金) 17:48
知っていたら教えてください。
シェルを使用してSQLPLUSのやり方についてですが、

以下の(1)のシェルからsqlplusにてORACLEに接続し
(2)のファイルのsql文を実行させたいのですが、
その時に(2)の条件文の'xxxxxxx'を(1)のシェルから引数と
して(2)に渡したいのですがどうしたら良いかわかりますで
しょうか?

また、(2)のsql文にて得た情報を(1)のシェルに与える場合
はどうすれば良いですか?

(1)aaaa.shファイル
--------------------------------------------------
sqlplus user/passward @bbbb.sql

--------------------------------------------------


(2)bbbb.sqlファイル
--------------------------------------------------
select item1 from use_table where item2 = 'xxxxxxx'

---------------------------------------------------

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 685 # 68user 2000/01/21 (金) 20:21
これは SQL の話ですか? ならば僕にはわかりません。
じゃなくて、あるファイルの内容の一部をコマンドラインの引数として
渡したり、出力結果をコマンドラインの引数として渡したり、という
ことですか? つまりシェルスクリプトの書き方を質問しているのですか?

もし後者なら、ちょっと意味が掴めないです。
    「もしファイルの内容が xxxxx だとしたら、その中から yyy の部分の取り出し、
        最終的に zzz user/passward @bbbb.sql xxxxx という風にコマンドを実行したい」
などと例を書いて下さい。

> SJIS の 0xFA40
では、なぜファイルには 0xFAC0 が書かれているんだろう?

No. 686 # gama [URL] [E-mail] 2000/01/22 (土) 02:41
逆link より遡って登場させていただきます。

どうも...参考になってうれしいです。>参考になった方

敬愛する、68user さんとこの掲示板で URL 書いていただいて感激です。


あーと、有識者系から嫌われ、UG 系からは、もっと、あぶない情報を
との声をいただく我が Web であります(^^;;;

さて、jcode.pl で、sjis と EUC との判別について...

かつて、半角カナを jcode.pl で扱いたいたかったので、
いろいろ試行錯誤した結果が、

http://www2d.biglobe.ne.jp/~gama/cgi/jcode/jcode.htm

にあります。

自分勝手に判別するルーチンを 変造しています。

ご参考になれば、幸いです。

No. 687 # 68user 2000/01/23 (日) 02:43
> 敬愛する、68user さんとこの
もちっと偉い人を敬愛して下さい :-)

> 自分勝手に判別するルーチンを 変造しています。
では早速拝見…と思ったら、getcode.pl が not found なようで…(^^;

No. 688 # 68user [URL] [E-mail] 2000/01/23 (日) 03:37
前の人の FORM 内容が残ってしまうのと、cookie のデータが
間違ってたのを修正。どうかな?

No. 689 # muro 2000/01/23 (日) 19:04
初めまして。CGI(perlスクリプト)のことで調べごとをしていたらたどり着きました。
ですが肝心のその調べごとについてはなかなか思ったようなページが見つからず、ちょっと困っております。
一見さんにて恐縮ですが、できたらご助言下さい。

何かというと、「HTTPの(リクエスト)ヘッダ」についてです。訳あってWebページを取得するスクリプトを自前で
用意する必要があるのですが、まさかGetだけ送るっていう横暴なことはさすがにしたくないので。。。(--;

・HTTP(要求)ヘッダの一覧+解説
・通常のブラウザが送信しているヘッダについて

といった情報が記載されているページを探しております。

もちろんcgiなどで環境変数一覧を表示させた結果(応答ヘッダ)と基本的に大差がないことは
存じておりますが、やはり一度確認しておきたいのです。

また、手法を変えて、LWPなどのモジュールでヘッダを個別設定できるかどうかなども調べてみるつもりです。
この辺の情報でも構いませんのでお願いします。

以上、大変わがままな質問ですが、よろしくお願いします。
#RFCを見ろっていうのはご勘弁下さい。(^^;

No. 690 # 68user [URL] [E-mail] 2000/01/23 (日) 23:51
> ・通常のブラウザが送信しているヘッダについて
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=658
で用は足りますか?

> ・HTTP(要求)ヘッダの一覧+解説
RFC…。もし金を払ってもいいなら http://www.oreilly.co.jp/BOOK/webcli.htm

> LWPなどのモジュールでヘッダを個別設定できるかどうか
とりあえず
    perldoc LWP::UserAgent
    perldoc HTTP::Headers
    perldoc HTTP::Request
    perldoc URI::URL
を御一読下さい。

No. 691 # gama [URL] [E-mail] 2000/01/24 (月) 21:50
>> 自分勝手に判別するルーチンを 変造しています。
> では早速拝見…と思ったら、getcode.pl が not found なようで…(^^;

Link 直しました(^^;;;

  http://www2d.biglobe.ne.jp/~gama/cgi/jcode/jcode.htm

No. 692 # goosan [E-mail] 2000/01/25 (火) 10:57
http://www2d.biglobe.ne.jp/~gama/cgi/jcode/k-jis.htm
こちらのページなんですが、JISで8bitの半角カナを使っている
ようですが、ESC ( I で7bitのカナを使うのが普通だと
思うのですが。学校のFreeBSD-3.3+NC4.7ではSJISやEUCのページは
見えるのですが(半角カナも)、ここだけ化けてしまいます。
家の環境(Win95+NN3.04)ではここも文字化けしていないのですが、
ソースを見た時、半角カナの部分だけJISが化けていないので
気になっていました。

No. 693 # gama [E-mail] 2000/01/25 (火) 23:40
> こちらのページなんですが、JISで8bitの半角カナを使っている
> ようですが、ESC ( I で7bitのカナを使うのが普通だと
> 思うのですが。学校のFreeBSD-3.3+NC4.7ではSJISやEUCのページは
> 見えるのですが(半角カナも)、ここだけ化けてしまいます。

あ、なるほど、現在のは手許の Win95 上のエディタでコード変換を
処理した結果なので、多分半角カナが 8bit なんですね。

ずーっと、それでいいと思いこんでました。

7bit 半角カナとかいうと、20 年以上くらいの規格という思いこみがあった
わけです。

> 家の環境(Win95+NN3.04)ではここも文字化けしていないのですが、
> ソースを見た時、半角カナの部分だけJISが化けていないので
  気になっていました。

No. 694 # リュウ [URL] [E-mail] 2000/01/28 (金) 20:19
ゲーム系掲示板を作ってみたので使ってみて

No. 695 # エリ 2000/02/01 (火) 16:03
PC上で、C++で作成したDLLを、UNIX上で使えるようにしたいのです。
どのようにしていけばよいか、教えてください。
C++内でどのような変換を行い、UNIX上にてコンバートすればよいのでしょうか?

No. 696 # ゲノ 2000/02/01 (火) 16:40
質問があります。よろしくお願いします。
% ls ファイル名 
とした時に該当ファイルが無かった場合
ls:No match.
と出ますがこのメッセージを出さない方法が
ありましたら教えて下さい。

No. 697 # 68user [URL] [E-mail] 2000/02/01 (火) 18:40
> C++で作成したDLLを、UNIX上で使えるようにしたいのです。
Windows は全く知りませんが (DLL ってランタイムライブラリ
ですよね? というくらいしか知らない)、DLL を UNIX に
持ってくるのはさすがに無理でしょう。

C++ のソースを持ってきて、ar でアーカイブ作るか、ld で
ランタイムライブラリを作るのがまっとうな方法だと思います。

> ls:No match.
> と出ますがこのメッセージを出さない方法
「No match」が出るのは
    「tcsh で、ワイルドカードを使って、マッチしなかったとき」
だと思いますが、
    % (ls hoge* >/dev/tty) >& /dev/null
で、標準エラー出力をリダイレクトするとか、
    % set nonomatch
    % ls hoge*
として、マッチしなかったときにエラーにさせないようにするとか、
    % set noglob
    % ls hoge*
として、最初からワイルドカードを展開させない、などの方法があります。

No. 698 # Fu [E-mail] 2000/02/01 (火) 20:39
はじめまして。
perlでメールを受信する方法を調べていたところ、こちらの掲示板を
発見しました。
お尋ねしたいことは、pop3サーバーからメールを受信し、そのメールの
添付ファイルをWindowsのフォルダに保存する方法です。
UNIXやCGIの経験が全く無い素人なもので、なかなかうまくいきません。
参考になるURLや書籍等もありましたら教えていただけないでしょうか。
OSはWindowsNT4.0又はWindows95です。
宜しくお願いします。

No. 699 # 68user [URL] [E-mail] 2000/02/01 (火) 21:22
POP へのアクセスは
    http://X68000.startshop.co.jp/~68user/net/
を読んで下さい。

multipart メールをバラすのは、perl の MIME-tools モジュールで
できそうな感じです (試したことないので)。わからなかったら
また質問して下さい。

No. 700 # 68user [URL] [E-mail] 2000/02/01 (火) 21:33
> multipart メールをバラすのは、perl の MIME-tools モジュールで
perl の MIME-tools、IO-stringy、MailTools モジュールを
入れて、perldoc MIME::Parser のサンプル通りやってみたら
あっさりできました。モジュールに頼ると簡単だなぁ。

No. 701 # ももんが 2000/02/02 (水) 08:39
: : 信じられないけど本当の話。  
: : 私はある日BBSで1000円が200万円に、、、とかいてあるのを見た。
: : 200万円ものお金が郵送されてくると書いてあった。
: : まさか、そんなには、、、と思ってはみたが、
: : やらなきゃ何もはじまらない、まぁ、何もなくて1000円くらいの損だし、、、
: : ま、数万くらいは、、、、。と、思っていた。
: : (ホントに軽い気持ちで)だから、そのBBSのとおりにやってみた。

: : 私がやったことは、書き換えたファイル(この文書です)を
: : ニュースグループやBBSの電子掲示板などに(!!出来るだけ多くの!!)
: : アップロードした。
: : そして私はお金が来るまでどきどきしながら待っていた。
: : 私は10万円や15万円ぐらい来る時しまうところを確保していた。 
: : でも、、、。お金の入った封筒がどんどん郵便受けに入ってくるのには、
: : 仰天した。!! さて、私にいくらお金が送られてきたでしょう?
: : 10万?20万?50万?私は合計!!!約200万円!!!嘘、、、、、。
: : このお金を目にしてまだしんじらんないって感じ!!!

: : さて、その具体的な方法を書きます。ちゃんとファイルに保存しておくと良いよ。
: : あとで役に立ちます。君が払わなくてはいけない物は、5枚の切手、封筒、1000円。
: : それを、リストの5人に、合法的に現金を送る方法で送る。そして、君の名前と
: : 住所が書いてある方のファイルをいろいろなところにアップロードする。
: : そうしたらたった1000円あげるだけで150万円から250万円の戻りが3〜5週間で
: : 届きます!!!!

: : では具体的にどうすれば良いか?
: : * **名前と住所のリストは最後にあります。***
: : まず一枚の紙に「私をあなた方のリストに入れてください。」これを書くことにより、
: : このスーパーマネーシステムは成り立ちます。(合法になります。) 
: : あなたは200円をランダムに払うのではなくこのシステムに払うのです。
: : そうそう、紙に自分の名前と住所とあなたが出す人はリストの何番目にいたかを
: : 書きます。
: : 1.(あなたはリストでは、○番目にいました)と、書きます。
: : 2.(1)で書いた紙を200円にまきつけましょう。そして封筒に入れ、
: :  リストに書いてある5つの住所に送る。 紙を200円に巻きつけて、  
: :  200円を見えなくするのにはワケがあります。 
: :  郵便で現金を送ってはいけないのだ。郵便局に行って200円の5枚にしても良い。
: :  手数料10円。小為替だったらまく必要がないよ!

: : * *このステップは重要です。**
: : 3.さて、ここからが重要。よく読んで、システムを理解してね。
: :  一番上の人を消す。そして他の皆のポジションを一つずつ上げる。
: :  つまり、ポジション2の人をP1に、P3の人をP2に、P4の人をP3に、P5の人をP4に
: :  かえるということ。そしてポジション5に君の名前、住所、郵便番号、国を
: :  書きこむわけ。
: : 4.そして(3)で変えたこれのファイルをいろいろなところに出来る
: :  だけたくさんアップロードします。  

: : アップロードしたぶん自分に跳ね返ってきます。
: : 自分と他の4人にもお金が入ることになります。

: : さて皆さん、リストについては正直にしましょう!! 
: : 汚い事しなくても、お金はいっぱい入るから。ウソは絶対に辞めましょう。OK?

: : 5.ここまできたらもう後は人生楽しみましょう。
: :  お金は着々と君の郵便受けに入ってきます。

: : 初めて2週間くらいからお金が入りはじめて3〜4週間目にはお金の台風が君の
: : 郵便受けを襲います。 びっくりして叫ばないようにね。
: : お金がなくなってきたら又既に書き換えたファイルに(4)〜の行程を繰り返しましょう。
: : 絶対にこのファイルはなくさないように。
: : 何度でも使えるから。参考にしてください。
: : 名前と住所のリスト正直がこのプログラムを成功させる!!!

: : 1. 横山美由紀 〒193-0932東京都八王子市緑町401−105
: : 2. 波多野絵梨 〒860-0085熊本県熊本市高平2-16-5
: : 3. 浦西弘明 〒524ー0101滋賀県守山市今浜町2620-14-216
: : 4. 村上健一 〒014-0722秋田県仙北郡中仙町豊川字下延17-2
: : 5. 小関リノ 〒080-0834北海道帯広市稲田町西1線5番地115

: : あなたに全くマイナスはありません!!!!
: : 君にお金を送ってきた人の名前はなくさないようにしたほうが良いでしょう。 
: : みんなで公平にこのシステムを使いましょう。

: : 最後に:正直がこのシステムを成功させるのです!!!
: : もしもあなたがお金をリストの五人に出さない卑怯者だったらあなたはあまり
: : お金をもらえない。私は誰かがお金をリストの五人に送らなかったので3万円(2ヶ月後に)
: : しかもらえなかったのを知っている。それからお金をリストの5人に送ったのでリスト
: : の人たちは彼をリストに入れてあげた。そして4〜5週間後に彼は200万円以上手に入れたのです。 
: : これは本当の話ですよ!!! (ちょっとびっくり)
: : だまされたと思って1000円出せばすごい大金が手に入ります!!!(上記のことから)
: :  このチャンスを大事にしましょう!!!

No. 702 # Ta [E-mail] 2000/02/02 (水) 12:08
はじめまして。Taと申します。

whois.cgiに関して、お聞きしたいことがあるでのすが、もしよかったら教えて下さい。

私のISPは、LINUX(Redhat)を使用しているため、68Userが作られたcgiのスクリプトの
一部を変更しなければならないことに気が付きました。

オリジナルでは、'whois -h whoisserver domain'となっていますが、Linuxでは、whois
コマンドのパラメーターが違うようで、'whois domain\@whoiserver'('whois domain@whoiserver'というパラメーターも見たことがあるんですが)ということなので、スクリプト内の以下の部分のみを変更しました。


#変更前

$ret = `$whois -h $nics{$nic} $domain`;

#変更後

$ret = `$whois $domain\@$nics{$nic}`;


これにプラスして、当方のISPでは、'whois'が、'/bin'にあるので、'environment.pl'の'$whois'のパスも'/bin/whois'に変更しました。

ところが、サーバーエラーが出てしまいます。ISPで用意してあるデバックの機能(web
から行う)を利用してみたところ、以下のような結果がでました。

-----------------------------------
TEST 1: script and permissions
Passed Test 1!

TEST 2: script file format
Passed Test 2!

TEST 3: check perl path
Passed Test 3!

TEST 4: perl syntax
      String found where operator expected at t_whois.cgi line 45, near "print ""
          (Might be a runaway multi-line "" string starting on line 33)
       (Missing semicolon on previous line?)
      syntax error at t_whois.cgi line 45, near "print ""
      t_whois.cgi had compilation errors.

Your script failed one or more of the tests and could not
be automatically corrected. Please correct the errors
listed above and try again.
-----------------------------------

調べてみたところ、おそらく、変更した部分のが関係すると思うのですが・・・
原因がよく分かりません。

もし、解決方法をご存知でしたら、ご指導頂ければ助かります。

Ta

No. 703 # 68user [URL] [E-mail] 2000/02/02 (水) 13:34
> (Might be a runaway multi-line "" string starting on line 33)
> (Missing semicolon on previous line?)
「33行目から始まる "" が閉じてないのではないか?」
「前の行の最後にセミコロンを付け忘れていないか?」
ということでしょう。

> $ret = `$whois $domain\@$nics{$nic}`;
これ自体は問題ありません。

No. 704 # Ta [E-mail] 2000/02/02 (水) 14:39
68Userさん、早速のお返事有り難うございます。
スクリプトは確認したと思うのですが、再度、確認してみます。
もし、また分からないことがあれば、お聞きするかもしれませんが、
よろしくお願い致します。

Ta

No. 705 # Ta [E-mail] 2000/02/02 (水) 20:58
度々すいません。Taです。スクリプトにミスがありました。その後、デバックをしてみると、全てパスしました。

TEST 1: script and permissions
Passed Test 1!

TEST 2: script file format
Passed Test 2!

TEST 3: check perl path
Passed Test 3!

TEST 4: perl syntax
      t_whois.cgi syntax OK
Passed Test 4!

Your script has passed all 4 tests.

If your script passes these tests, and still won't run,
you might look for one or more of these common problems:
      1) make sure it can find any files or external programs it needs
      2) make sure any included perl programs also check out
      3) make sure you are writing a "Content-type:" line
            at the beginning of your output
Consult your favorite Perl/CGI book for more information.

これで動くかと思ったら、Internal Server Error・・・
う〜ん、なんでだか分かりません。environment.plは、$whoisのパスを修正するだけで、いいはずですよね。

何か、チェックしてみるところがあったら教えて下さい。

Ta

No. 706 # 68user [URL] [E-mail] 2000/02/03 (木) 06:30
とりあえず、

> open(STDOUT,"|$nkf -j");
open(STDOUT,"| /usr/local/bin/nkf -j");
> &put_header("whoisしてみよう -- $domain --");
print "Content-type: text/html\n\n";
print "<HTML>\n<HEAD><TITLE>whoisしてみよう -- $domain --</TITLE></HEAD>\n";
print "<BODY ...(略)...>\n";
> &finish_work;
print "</BODY>\n</HTML>\n";

などと書き換えて、environment.pl なしで動くようにしてみて下さい。

それはそれとして なぜ動かないかというと、CGI 経由で実行した際に
environment.pl が読み込めているかどうかが気になります。
    if ( ! require 'environment.pl' ){
        print "Content-type: text/plain\n\nCan't load environment.pl\n";
        exit;
    }
てな感じでチェックするといいでしょう。

No. 707 # dai [E-mail] 2000/02/04 (金) 22:10
初めまして〜m(_ _)m

ちょっと聞きたい事があるのですが、unixでmoにデータをセーブするにはどうすればいいんでしょうか?
環境はあるみたいなのですが、やり方が分かりません。

因みにroot権限はないです。
unixはsolarisです。

No. 708 # Ta [E-mail] 2000/02/06 (日) 00:12
68Userさん、色々とアドバイス有難うございます。

どうしてもうまくいきません。'nkf'のパスが間違っているのでしょうか?
('environment.pl'を使わない方法で行ってみました)
'whois'も、結局、調べたところ、'/bin/whois'でしたし・・・

今晩、また挑戦してみます。

No. 709 # 68user [URL] [E-mail] 2000/02/06 (日) 06:25
まずは
    #!/usr/local/bin/perl
    $|=1;
    print "Content-type: text/plain\n\n";
    print `/bin/whois yahoo.co.jp@whois.nic.ad.jp`
ここから始めましょう。これでダメなら whois の問題です。動いたら
    #!/usr/local/bin/perl
    $|=1;
    open(STDOUT,"|/usr/local/bin/nkf -j");
    print "Content-type: text/plain\n\n";
    print `/bin/whois yahoo.co.jp@whois.nic.ad.jp`
として下さい。これでダメなら nkf のパスが問題です。

whois.nic.ad.jp は JIS コードを返しますが、whois.cgi は
EUC で書かれているので、nkf で文字コードを統一しています。
なので、細かい事を言うと上の例では nkf は要りません
(スクリプトが EUC を (というか、日本語を) 出力していないから)。

> unixでmoにデータをセーブするにはどうすればいいんでしょうか?
ここらへんがヒントになるでしょうか。
    http://www.pfu.co.jp/x86/faq/
僕自身は経験がないのでわかりません。

No. 710 # へにか 2000/02/06 (日) 19:29
「HTTP クライアントを作ってみよう」と、2000/01/12(水) 20:56の
proxyに関する書き込みを参考にしたら、簡単なproxyサーバーが、
簡単に作れました。ありがとうございます!

# でも、数行の追加じゃ済まなかったなぁ。もっと修行すれば
# 出来るようになるんだろうけど・・・

No. 711 # has 2000/02/07 (月) 01:03
なにやらいろいろ大変そうですね。
ところで掲示板の話なんですが…。
ログの管理とか、なんかいい案浮びました?
俺はあんま考えてないですけど。

それとうちの掲示板、過去ログ一覧をちょっと
並べ替えてみました(なにやってんだか…)。
もしよかったら使ってやって下さい。
それではまた。

No. 712 # 68user [URL] [E-mail] 2000/02/07 (月) 04:31
> # でも、数行の追加じゃ済まなかったなぁ。
そうでしたか。実際に作ってみたわけではないので、そうかもしれません。
ただ、実用で使おうとすると、マルチスレッド化しないといけませんが、
その場合は結構行数は増えますね。

> ログの管理とか、なんかいい案浮びました?
ログを1つのファイルにまとめるか、1.txt・2.txt…と分けるか、ですか?
実際のところ、それぞれメリット・デメリットがありますから、難しいですね。
# <Email ....> 方式はやめようと思ってます。<Email>....</Email> スタイルに
# するつもり。

それはそれとして、後者のログ管理方式にしてくれ、ということなら
どちらでも選べるように改造しますけど どうします?

> 過去ログ一覧をちょっと並べ替えてみました
個数が多くなると、見やすいですね。参考にさせていただきます。

ところで ML の件ですが、has のところでやってもらえません?
うちは後任の管理者がいないので、この時期に始めるのはあきらめました。

No. 713 # かりり [E-mail] 2000/02/08 (火) 05:38
やっと、自力でCGI設置出来ました。
CGIをやろうとしてから実に二年もかかってるんですけど
パーミッションとperlと言う言葉の意味がやっと分かりました
次は自作に燃えて居たら、CGI プログラムのはじめの一歩
って言うコンテンツが在ったので嬉しいです。perlパソに入れて
CGIの本買ってきますよー。なんか、CGI設置できたのが
嬉しくて、68userさんに報告がしたかったのですー
ヒトの作ったCGIがうごいたってだけなんですけど、嬉しかったです。

No. 714 # 68user [URL] [E-mail] 2000/02/09 (水) 00:16
> perlパソに入れて CGIの本買ってきますよー。
それはよいことで御座います。やはり自作するのが一番楽しいわけで、
ぜひ勉強してみて下さい。

ただし、他人に聞く前に「まず本を読む、まず自分で調べる」という
ことは必ず行うようにして下さい。自分で調べられない・自分で
調べる気のない人は、上達しませんから。

No. 715 # たまり 2000/02/10 (木) 23:35
はじめまして、たまりと申します。
CGI、特にperlを勉強中の物です。
「ネットワークプログラミングの基礎知識」、滅茶苦茶参考になりました。
ありがとうございます。

現在、68userさんのスクリプトを参考に、FTPクライアントを書いているんですが、
どうもSTORがうまくいきません。
ファイルが送信し終わるまでに接続を切られてしまい、FTPdがファイルハンドルを
解放しないような状態になってしまいます。

当方の環境はというと、Windows98 + ActivePerl build 521 + TinyFTPDaemon Ver 0.51です。
HDの転送速度が追いつかないのかなと思い、以下のようにウェイトを入れてみても
だめでした。

while (<IN>) {
    print DATA $_;
    $i = 10000;
    while ($i) {$i--;}
}

上記のコードはPassiveモードでサーバが開いたDATAポートにINファイルをPUTして
いる部分だとお考え下さい。
結果として転送速度は確かに下がったのですが、ファイルハンドルを解放しない
(=FTPdが「受信が完了しました」と言わない」)という症状は改善されません。

なお、環境の制限により、シングルスレッドで書いています。

これは、環境による原因があるのでしょうか?
それともコーディング上の問題があるのでしょうか?

よろしければご教示下さい。

No. 716 # 68user [URL] [E-mail] 2000/02/11 (金) 20:24
> ファイルが送信し終わるまでに接続を切られてしまい
何バイト送ったら切れる、などという再現性はありますか?
1バイトずつ送ってみるとどうでしょう。また、切れるのは
データコネクションですか? コマンドコネクションですか?

> FTPdがファイルハンドルを解放しないような状態
というのは具体的にはどういう状態ですか?
これもデータコネクションかコマンドコネクションかを教えて下さい。

あと、このコードの前後数行を見せてもらえますか?

> HDの転送速度が追いつかないのかなと思い
これはさすがにないと思いますよ。Windows といえども OS ですから、
そこらへんはきっちりやってくれるでしょう。

ちょっと急いでいるので、この辺で。

No. 717 # 68user [URL] [E-mail] 2000/02/11 (金) 20:28
> これはさすがにないと思いますよ。
仮に HDD がとても遅かったとしても、
>> while (<IN>) {
でブロッキングするだろうから、読めなかったけど処理が
先に進むなんてことはないと思う、ということです。
# ここでブロッキングしてくれないと、OS の意味がない。

No. 718 # メリクリウス 2000/02/12 (土) 00:36
初めまして、セガBBSの過去ログ凄いです、
ご苦労様としか言えません、
また、じっくり見させてもらいにきます、
(今からみるんだけど、、、)

No. 719 # たまり 2000/02/12 (土) 02:10
> 何バイト送ったら切れる、などという再現性はありますか?
再現性はないようです。
接続が切られた時点でのサイズは不定でした。

> 1バイトずつ送ってみるとどうでしょう。
えっと、具体的にどのようにすればいいんでしょうか?
readで1バイトずつ読んでいくのでしょうか。ちょっと試してみます。

> また、切れるのはデータコネクションですか? コマンドコネクションですか?
すいません、説明が足りなかったようで。
どうやらQUITは送信されているようなのでデータコネクションが切られているようです。

>> FTPdがファイルハンドルを解放しないような状態
FTPdが起動中はエクスプローラからもファイルの削除等ができません。
もちろんスクリプトが終了していても、です。
FTPdを終了させると、送信したファイルが元サイズ以下(不定)であるという感じです。
そうなると削除等も可能になります。
「データコネクションかコマンドコネクションか」というのは自分にはわかりません。

> あと、このコードの前後数行を見せてもらえますか?
以下のようになります。
ほとんどftptrans.plを流用させて貰ってます(^^;

if ($mode eq 'put') {
    &send_command(COMMAND, "STOR $target_file\r\n");
} elsif ($target_file =~ m|/$|) {
    &send_command(COMMAND, "LIST $target_file\r\n");
} else {
    &send_command(COMMAND, "RETR $target_file\r\n");
}

&client_work(DATA, $data_connection_host, $data_connection_port);
open(IN, $infile) || die "$infile: $!";
binmode(IN);
while (<IN>) {
    print DATA $_;
}
close(IN) || die "close: $!";
&read_response(COMMAND);
close(DATA) || die "close: $!";

&send_command(COMMAND, "QUIT$CRLF");
&read_response(COMMAND);
close(COMMAND) || die "close: $!";

> # ここでブロッキングしてくれないと、OS の意味がない。
当てがはずれてたようですね(^^;
実際改善されなかったですし。


ファイルが送信し終わる前にQUITが送信されてると言うことはデータコネクションが
切断される前にコマンドコネクションが切断されると言うことでしょうか?
確かFTPってデータコネクションの切断=データの終わりでしたよね?
でもcloseでは死んでないようだし・・・

とりあえず1バイトずつを試してみます。

No. 720 # たまり 2000/02/12 (土) 02:13
あ、すいません、訂正です

> &send_command(COMMAND, "QUIT$CRLF");
&send_command(COMMAND, "QUIT\r\n");

です。

# 普段$CRLF="\r\n";でやってるもので(^^;

No. 721 # 68user [URL] [E-mail] 2000/02/12 (土) 09:19
> メリクリウスさん
メールの返事をここでさせて頂きますが、人の多いところから
リンクしちゃダメなのは、お肉さんのところです。うちは
どこからリンクしても構いませんです。


> FTPdが起動中はエクスプローラからもファイルの削除等ができません。
FTPd が STOR 先のファイルをオープンし続けているということですね。
謎ですね。

こちらには Windows 環境がないので、そのものずばりの答えは
わかりませんが、思いつくままに。

1. まずは小さなファイルでやってみて下さい。
2. sub client_work の最後で、SOCK のバッファリングを OFF にしている
   ($|=1) のは削ってませんよね?
3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてないんじゃない
   ですか? データコネクションが確立したら、
    150 Binary data connection for test/hogemoge (127.0.0.1,33299).
   というレスポンス、さらに転送が完了したら
    226 Transfer complete.
   というレスポンスが返ってきませんか?
   (でもこれが原因じゃないと思う。レスポンスを読まなくても転送はできるはず)
4. $verbose=1 にして、プロトコル眺めてますよね?
5. passive なら、telnet コマンドだけを使って送信してみるのもいいかも。
6. ftp にデバッグオプションを付けて、プロトコルを観察してみては。

>> 1バイトずつ送ってみるとどうでしょう。
> えっと、具体的にどのようにすればいいんでしょうか?
例えばこんな感じです。
    &send_command("STOR $target_file\r\n");
    &client_work(DATA,$data_connection_host,$data_connection_port);
    &read_response(COMMAND);

    use IO::File;
    sysopen(IN,$infile,O_RDONLY);
    binmode(IN); # sysopen なら不要かな?
    while (1){
        $nread = sysread(IN,$buf,1);
        $read_size += $nread;
        last if ( $nread == 0 );
        print "$read_size read ";
        print DATA $buf || die "$!"; # 成功したかどうかチェック
        print "$read_size send.\n";
    }
    close(DATA); close(IN); &read_response(COMMAND);
    &send_command("QUIT$CRLF"); &read_response(COMMAND); close(COMMAND);
とりあえず、何バイト目でこけているのかは調べられるでしょう。
ただし、パケットレベルで 1バイトずつのデータが送られる、という
保証はありません。

念には念を入れて、print DATA の代わりに syswrite(DATA,...) を
使ってみるのもいいかも。
# syswrite = select(DATA);$|=1;binmode(DATA);print DATA と
# 同じはずだと思うんですが、違いましたっけ。


Solaris の ftpd 相手に試していて思ったんだけど、
    http://X68000.startshop.co.jp/~68user/net/ftp-5.html
> 次のアクションは
>  データコネクションの確立なのか
>  コマンドコネクションからのエラーレスポンスなのか
> のどちらなのかが わからないのです。
こんな変な仕様は、もしかして FreeBSD の ftpd だけかもしれない…。
調べておかねば。

No. 722 # アーゴン 2000/02/13 (日) 20:17
はじめまして。ゲームでわからない事があったので、誰か教えて下さい。
「七ツ風の島 物語」というゲームなのですが・・・
(知っている人、いるかなぁ・・・)
第11章 『小さくてキレイな物』・・・で、どうしたらいいのか、わかりません。 あった事といえば、白ガラスのヒューと、カンぞうに会った事です。できれば、わかる人、教えてください。よろしくお願いします。
  

No. 723 # たまり 2000/02/14 (月) 05:02
返事が遅くなって申し訳ないです。
ここ二日ほど色々あって何もできませんでした(^^;

> FTPd が STOR 先のファイルをオープンし続けているということですね。
です。FTPd側の問題という可能性も無くはない気もしますが(但し、普通の
クライアントを使用した場合は当然ながらうまく送信できます)

まず、先程試してみた結果から。

どうやら原因は
> 3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてない
だったようです。
これを入れたらまともに動いてくれるようになりました。

念のため、詳しい報告も
> 1.
小さなファイル(数KB程度)でも同様でした
> 2.
削っていません。
> 4.
とりあえずまともに動くようにしようと即興で作っていたので$verbose=1の部分は
削ってました(^^;
本来はそういうときこそ細かくデバッグすべきなんでしょうけど・・・
> 5. 6.
telnetやftpを使えば問題なく送信できます。

なお、1バイトずつ読んでいく方法ですが、
print DATA $buf || die "$!";
ではデータ的に0x30、つまり'0'のところでなぜかdieするようです。
print DATA $buf;
のようにするとうまくいきました。

また、syswriteに関しては使ったことがないのであまりわかりませんが、
引数はsysreadと同様な形で取って、返り値は書き込んだバイト数のようです。
また、binmodeはsysopenでO_BINARYを指定しておけば不要かと思います。

ありがとうございました。

No. 724 # 68user [URL] [E-mail] 2000/02/14 (月) 18:59
> はじめまして。ゲームでわからない事があったので、誰か教えて下さい。
ここにはゲームに詳しい人はあまりいないような気がします…。


> どうやら原因は
>> 3. QUIT 送信の前に &read_response(COMMAND) が一つ足りてない
> だったようです。
なるほど。ちょっと不親切な ftpd ですね (と僕は思う)。

> ではデータ的に0x30、つまり'0'のところでなぜかdieするようです。
なんででしょう。調べてみよう。

> また、binmodeはsysopenでO_BINARYを指定しておけば不要かと思います。
ああそうか。(Cでいうところの) open でも改行コード変換できるんですね。

> こんな変な仕様は、もしかして FreeBSD の ftpd だけかもしれない…。
> 調べておかねば。
これは Solaris の ftpd でも同じでした。変なの。

No. 725 # ハリー 2000/02/15 (火) 19:43
はじめまして、ハリーと申します。
実は今、Kシェルを作っているんですが、シェル内で
exportコマンドを打って環境変数を変更しようとし
てもできませんでした。普通にexportコマンドを打
ってもダメなんですか?それとも出来ないのですか?
シェル初心者なので、よくわかりません。
よろしく、お願いします。

No. 726 # 68user [URL] [E-mail] 2000/02/15 (火) 19:59
export HOGE=FUGA で できませんか。

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