======================================================================== 【プログラム名】 HTTP Extentions for DOS on TCPIP/TOWNS rel.004 【 動作環境 】 Fujitsu FM-TOWNS専用 TownsOS V2.1 Console 要:TCP/IP for TOWNS 【 動作確認 】 FM-TOWNSII MX (iDX4-100MHz) + FM50L-187 TownsOS V2.1L51 on MS-DOS Ver.6.2(+3) FMV-TOWNS FeshGE (K6-180MHz)+ FMV-183 TownsOS V2.1L51 【  制作者  】 HOTARUIKA☆ (FZA06045@nifty.ne.jp) 【 圧縮形式 】 LHA -lh5- 書庫形式 【 開発環境 】 Microsoft C V5.1 (for PC-9801) TCP/IP for TOWNS V0.02 WATTCPLIB 16bit for TOWNS 【  転 載  】 若干制限あり。あまりお勧めまできせん。DOC参照。 ======================================================================== Updated! [rel 004] ・hostsファイルに対応させました。 ・サーバによってヘッダを切り取れないバグを緩和(^^;しました ・サーバの負荷状態によってデータを取り零すバグを緩和しました。 ・ネームリゾルブ出来ないバグが明らかになりました(^^; ======================================================================== [重大なバグ] (1) LAN接続時において、サーバの負荷状態によってファイルの転 送を完了できない場合があるようです。転送後は必ずファイル サイズを確かめてください。WindowsベースのHTTP Daemonをお 使いの場合は、WinProxyなどでこの現象が起きますが、裏でDOS アプリを動かしたりDirectXのゲームをしたりして(^^;、サー バのCPU負荷を上げてやると正常に転送できる場合があります。 AnHTTPDでは問題ありません。出来れば誰か直してください(^^; (2) 小さなファイルを連続転送していると、ホストに接続してもパ ケットが送れなくなることが有ります。この場合は、しばらく 待ってからもう一度試してください。 特に10KB未満のファイルだと、この現象が起きやすいようです。 (3) DNSには対応していません。サーバ名はIPアドレスで指定する 必要があります。その代わり、アプリケーションレベルで hostsファイルに対応していますし、一度IPで指定できるProxy を通せば問題ありません。(HOSTSの例は添付してます)。 WATTCPの不具合でしょうか…? (でもpingは動いてるんですよ ね、そのままリコンパイルすると動かないんですけど) ======================================================================== ■このプログラムの内容 HTTPサーバから、TCP/IPでファイルを取ってきます。 (山)氏による、TCP/IP for TOWNSに準拠しています。 DOS上で動作します。TownsShellから子プロセスとしても呼べます。 ■同梱物 HTTPG04.DOC : 説明書(本書) HTTPGET.EXE : HTTPファイル受信ツール HOSTS : hostsファイル(sample) HOSTS.BAT : hosts追加用バッチファイル READHOST.C : hostsファイル読取ソース(自由に使ってください) SJISCONV.EXE : Shift JIS -> Hex JIS Code Converter HTMT.EXE : HTMLタグ除去&コード変換 HTMT.DOC : 同説明書 ※SJISCONV.EXEは説明が無くてもたぶん大体分かります(^^; ※HTTPGET + HTMT + TextViewer で擬似ブラウザ化出来るかも(^^; ■説明らしきもの (1) ファイルを取って来る場合 まず、TCP/IP for TOWNSでコネクションを確立して、 E:\>HTTPGET GET URL [SaveFileName] のようにして、指定したHTTPサ−バからファイルを取ってきます。 SaveFileNameに保存時のファイル名を指定します。 省略した場合、[httpget.out]というファイルに保存されます。 (※どうせ8文字以上だったら困るのでこうしてます(^^;) )   (例) E:\>HTTPGET GET http://192.168.0.86/index.htm E:\>HTTPGET GET http://192.168.0.32:8080/www.nifty.com/ ポートの指定やプロキシはそれなりに対応しています。 とりあえず、Ether + AnHTTPd 経由のInternet接続では動いてます。 dospppからの直接ダイヤルアップで動くかは試してないので不明です。 ============================ なお本バージョンでは「ネームサーバに対応していない」ので、サーバ 名はIPアドレスで指定する必要があります。その代わりhostsファイルに 対応していますので、一度pingしてIPを確かめて登録すれば、普通に使 えます。hostsファイルはテキストエディタで編集できるほか、 E:\>HOSTS 192.168.0.1 myserver のように追加できます。(専用のバッチファイルがついています。) あと、index.htmを省略したURLの最後に'/'を忘れると動かないサーバ が多いですので、正しく入力するよう注意してください。   (例) ○ /www.nifty.com/ × /www.nifty.com WATTCPの仕様で同じディレクトリにwattcp.cfgが存在しないと動きません。 注意してください。 なお、プロキシの指定は環境変数でも可能です。autoexec.batとかで SET HTTPPROXY=192.168.0.1:8080 とか設定しておくと実行時に参照します。エラーチェックはしてませんの で、他に余計な文字は入れないで下さい。プロキシを通した後はネームサ ーバ指定が可能です。 (2) 掲示板に書きこむ場合 まだ未対応です。ごめんなさい(^^; 対応させる一応気はあります、たぶん(^^; ■注意   ・dospppによるダイヤルアップ接続では試してません。動かな かったら残念でした(直接試すにはまだ怖いので(^^;)   ・dospppの設定については、私に聞かないでTCP/IP for TOWNS    付属のマニュアルをお読みください。   ・認証が必要なサイトや、リダイレクトされるサイトへは接続    できません。リダイレクトはいずれ対応するかもしれません。   ・PC-98版MS-Cでコンパイルしているので、変な所で不法な割り    込みが発生するかもしれません。 ・たまに帰ってこないことがありますが、CTRL-Cで止めたりする と非常に不安定になることがあります。出来るだけ、気長にタ イムアウトを待つか、リセットして下さい。 ・sampleのHOSTSファイルは、よく行きそうな(^^;サーバを入れて ありますが、IPは変わる可能性がありますので注意してください。 あと、中身を詮索しないよーに(^^; ■動作確認環境 だいぶクセがあるようですので、全ての環境で動くとは思えません。 参考までに、私がテストした環境を以下に示します。 [TOWNS側] (1) FMTOWNSII MX (iDX4-100MHz; RAM 44MB) + FM50L-187 ( & FMT-192 ) + TownsOS V2.1L51 on DOS6.2 + HTTPGET rel.0.03 (2) FMV-TOWNS FreshGE (AMD K6-180MHz; RAM 96MB) + FMV-183 ( PnP Mode ) + TownsOS V2.1L51 + HTTPGET rel.0.03 [Server] (A) TOSHIBA Libretto ff 1050 (MMX-Pentium 233MHz; RAM 64MB) + FUJITSU FMV-182J ( 10BASE-T/PCMCIA) + Windows98 ( wsock32 Ver.2.2 Apr/28,1998 ) + AnHTTPD V1.28c (B) TOSHIBA Libretto ff 1050 (MMX-Pentium 233MHz; RAM 64MB) + FUJITSU FMV-182J ( 10BASE-T/PCMCIA) + Windows98 ( wsock32 Ver.2.2 Apr/28,1998 ) + Black Jumbo Dog Ver.2.1.2 [Comment] Case.1 (1)+(A) の場合 受信は正常に出来ているようです。 6MB程度までのファイルでは問題ありませんでした。 エラー発生時にHTTPのエンティティボディを読み取れないい う良く分からん現象が発生します(対策はしていますが)。 Case.2 (1)+(B) の場合 数KB以上の場合、ファイルの後半の数%を取りこぼします。 但し、バックグランドでアプリを動かして(DOSアプリや ソフトシンセなどで)、CPU負荷を上げてやると、正常に 受信できました。なお、Proxyを介してモデムで外部へと ダイヤルアップ接続した時は、取りこぼしは起こりませ んでした。 Case.3 (2)+(B) の場合 同様に、ファイルの後半数%を取りこぼします。 [Development Environment] FMTOWNSII MX (iDX4-100MHz; RAM 44MB) + FM50L-187 ( & FMT-192 ) + TownsOS V2.1L51 on DOS6.2 + Microsoft C V5.1 (for PC-9801) + RED2 + Mifes for FMR + FILMTN V2.45 + TCP/IP for TOWNS V0.02 + WATTCPLIB 16bit for TOWNS なお、たまに「拗ねる」ことが有るようですので、そういう時は 素直にリセットして再起動をかけてください。 FMV-TOWNSでは純正LANカードでないと動作しません。 ■notice...   ・FM TOWNSは富士通の独自アーキテクチャのPCです。   ・TCP/IP for TOWNSのWATTCPのTOWNS移植部は(山)氏の著作物です。    移植された(山)氏にはこの場を借りてお礼申し上げます。   ・Waterloo TCPのオリジナルは Erick Engelke氏の著作物です。   ・本プログラムの制作に当たり、DJ☆Uchi氏、へるみ氏に助言を 頂きました。どうもありがとうございましたm(_ _)m ・何かあったらメールかDJ☆Uchi氏の掲示板あたりに書いてください。 巡回してますので(^^; ■転載について ・一応それなりに安定してきましたので、rel.004から転載はOKです。 但しあまりお勧めしませんし、一応作者に許可を得てください。 あと、以下の条件を守ってください。 ・ネットワーククライアントの性質上、サーバをダウンさせないとも 限りません。危険性に付いては充分示唆してください。 ・冒頭の「重大なバグ」が減ったら、その時は新版を転載して下さい。 ■更新履歴   rel.004 [01/01/13] ・hostsファイルに対応させました。 ・サーバによってヘッダを切り取れないバグを修正しました。 ・サーバの負荷状態によってデータを取り零すバグを緩和しました。 ・ソケットコネクション確立の処理がうまく行かないことがある バグを緩和しました。 ・サーバによって、HTTP/1.0 404などのエラー発生時に、HTTPの エンティティボディを読み取れない場合を発見したので、対策を しました。   rel.003 [01/01/06]     ・名称を変更しました。     ・メッセージエンコーダ(SJISCONV)とHTMTを添付しました。     ・保存ファイル名を指定しないと動かないバグを修正しました。     ・バッファを大きくして、ヒープ領域から取るようにしました。     ・Proxyを環境変数で指定できるようにしました。   rel.002 [00/12/28]     ・ポートの指定に対応したのでプロキシ経由も可能になりました。     ・出力をファイルに吐くようにしました。     ・ヘッダを自動で切るようにしました。対象療法なので、相手に よってダメかもしれないです(^^;     ・パラメータにメソッドと保存ファイル名を指定するようにしま した。   rel.001 [00/12/19]     ・MS-Cを入手した勢いでとりあえず作る。出力は画面にのみ対応。 ■コメント   やーーーーーーーーーーっと、動きました。TCPIP/FM。 長かったです。なにしろネイティブ版だと私の環境ではさっぱり 動かない。で、諦めてリアル版で作ろうと、98版MS-Cを発掘して きて試したら、1日でなんとかなりました。これでテキストベー スならだいたい作れますね。   いや−、まったく嬉しい(^^;   では、今後に期待、ということで。   (といって自分の首を絞める(^^;))   最初に動いた日:2000/12/19記す。          HOTARUIKA☆(FZA06045@nifty.ne.jp) (01/01/03)追記: なんか動きが微妙なんですよねえ…。なぜか取りこぼすし。 ■参考文献      ・「ネットワークプログラミングの基礎知識」(68user氏)    (↑非常に参考になりました。この場を借りてお礼申し上げます)   ・RFC1945 (HTTP/1.0)   ・RFC2068 (HTTP/1.1) ========================================================================