TOWNS-TCPIP-FAQ-J
                    HOTARUIKA☆ FZA06045@nifty.ne.jp
                          (c) 2001 HOTARUIKA☆

                              Release 0.91
                               2001/03/17

改定履歴
2001/02/05  0.90   初版(プレリリース)
2001/03/17  0.91   開発関連記述を追加(コンパイル、リンク、TDLなど)


この文書の内容は無保証とします。もし内容に誤りがあったり、この文書によって不
利益を被っても、作者は一切関知しません。この文書は、非営利目的で使う限り、ま
た著作権表示を正しく明示している限り、自由に転載して構いません。
この文書は作者が個人で編集・配布しているものであり、記載されている組織や団体
等とは全く関係はありません。



Contents:

  1. TOWNS の TCP/IP 環境についての情報源
  2. TOWNS の TCP/IP 環境について
  3. Hardware と Driver
      3.1 Hardware
      3.2 Driver
      3.3 TCP/IP for TOWNS
      3.4 TCP/IP for Windows Environment
  4. TOWNS の TCP/IP 環境用のソフトウェア
      4.1 TCP/IP for TOWNS 用ソフトウェア
      4.2 TEEN 用ソフトウェア
      4.3 Windows 用ソフトウェア 
      4.4 Inet BIOS 用ソフトウェア
  5. TownsOS における TCP/IP 開発環境
      5.1 TCP/IP for TOWNS のパッケージ仕様
      5.2 TCP/IP for TOWNS のプロテクトモード版ライブラリ
      5.3 TCP/IP for TOWNS のリアルモード版ライブラリ
      5.4 TCP/IP for TOWNS でのコンパイル&リンク
      5.5 TCPIPFM Socket Management Library (TDL)


1. TOWNS の TCP/IP 環境についての情報源

1) @nifty FTOWNSフォーラム

    @niftyに加入している場合は、FTOWNSフォーラムから情報を得ることが出
    来ます。
    加入していない場合は、
        FTOWNS World Homepage (http://www.nifty.ne.jp/forum/ftowns/)
    から情報を得ることが出来ます。

2) Project TOWNS
    
    DJ☆Uchi(こっくり)氏の掲示板です。TOWNS関連の広い話題を扱っています。
    TOWNSのTCP/IP通信についても情報が交わされていることがあります。
        (http://hpcgi1.nifty.com/uchi/board.cgi)

3) へるみさんの掲示板

    現在TCP/IP for TOWNS用のメーラを制作されているへるみさんのホームページに
    ある掲示板です。
        (http://hpmboard1.nifty.com/cgi-bin/bbs_by_date.cgi?user_id=VEZ04653)

4) TEEN Infomation

    PC-88VA/PC-9801用TCP/IPプロトコルスタックであるTEENの公式サイトです。TOWN
    SでもMCD版TEENが動作するという情報があります。ただし、TOWNSユーザは皆無で
    あるため、それなりの覚悟は必要です。
        TEEN Infomation (http://www.pc88.gr.jp/~teen/)
        

2. TOWNS の TCP/IP 環境について

    現在、TCP/IPのアプリケーションは市販ソフトウェアやフリーソフトウェアで数
    多く存在しますが、それはWindows環境での話です。
    
    TownsOSおよびDOSで動作するTCP/IPプロトコルスタックや、アプリケーションは
    まだまだ少なく、いまだ実用の域には達していないのが現状です。また、実際の
    扱いや移植のための情報も少なく、苦労をされる方が多いようです。
    
    同じDOS環境でも、PC/AT互換機にはLynxなどの強力なテキストブラウザが存在し
    ますし、PC-9801/88VAシリーズでさえTEENを中心としたTCP/IP通信環境が整備さ
    れつつあります。TOWNSではそれなりにWindows95が動作してしまうため、DOSや
    TownsOSでのTCP/IP環境整備が遅れていますが、こうした環境の打破に向けて、
    この文書が役にたつことを願っています。



3. Hardware と Driver

3.1. Hardware
    
    TOWNSにも多種多様なハードウェアが存在し、それぞれドライバの対応具合が異な
    ってきます。そのため、TOWNSで実際に使用可能なハードウェアを以下に示します。

*灰TOWNS内蔵シリアルポート

    高速通信には追従しずらいようです。38.4k bpsまで速度を出すと辛いようです。

*白TOWNS内蔵シリアルポート

    8bitのFIFOバッファを持つため、もっとも安定して通信できるようです。
    38.4k bps程度までの速度が出せるようです。

*VTOWNS内蔵シリアルポート

    それなりに安定して通信できるようです。速すぎて困る場合もあるようです。

*TOWNS用DSLINKカード(FM50L-186/A/187/A+FMT-192) 及び互換品

    名称こそ違いますが、内容的にはただのLANカードと変わりません。
    ドライバはカードには付いてきませんが、各所で入手可能です。ドライバの入手
    面を考慮すると、一番推奨できると思われます。
    ただし、FM50L-186/Aは10BASE-2および10BASE-5のコネクタしか持たないため、現
    在主流となっている10BASE-Tで接続する場合は、両方のコネクタを持つHUBを使用
    するか、10BASE-5→Tの変換を行なうMAU(トランシーバ)が必要になります。
    Windows95上ではダイヤルアップルータを使用した高速通信も可能です。

*TOWNS用LANカード(FM50L-188/189+FMT-192)

    ドライバはカードにFD媒体で付いています。新品で購入した場合はそれで良いの
    ですが、カード単体で入手した場合、ドライバの入手に苦労します。
    なお、FM50L-188は、186Aと同じく10BASE-2および10BASE-5のコネクタしか持た
    ないため、10BASE-Tで接続する場合は両用のHUBかMAUが必要になります。
    Windows95上ではダイヤルアップルータを使用した高速通信も可能です。

*RATOC Systems製TOWNS用LANカード(REX-3586/87)

    純正品とは互換性はありませんが、サポート面はそれなりに充実しているようで
    す。
    RATOCのHomapageからWin95用ドライバもダウンロードできるようです。

*FMTOWNSII SN対応DSLINK/LANカード (FM50N-183,FMV-J181)

    FMR50ノート用のPCMCIAタイプのDSLINKカードと、FMV-4**Nシリーズ用のLANカー
    ドの一部が使用可能です。

*FMTOWNS用増設シリアルインターフェイス(FM50L-101+FMT-192)

    2ポートのシリアルポートを増設するものです。灰TOWNSのシリアルポートと同等
    であるため、FIFOバッファを備えていないため高速通信は難しいでしょう。一応
    Windows95でもサポートされています。

*URBAN Coporation製高速シリアルインターフェイス(TURBO232C-T)

    2ポートのシリアルポートを増設するものです。115.2kbpsの高速通信に対応して
    います。純正増設シリアルインターフェイスと互換性があり、Windows環境でも
    TownsOS環境でも使用可能です。ISDN回線にTA接続する場合は必須でしょう。

*FMV-TOWNS用LANカード (FMV-183/184)

    FMVシリーズ用純正オプションのISAバス用LANカードです。PnPに対応しており、
    ドライバディスクが添付されています。FMV-TOWNS SBL/SHL/SH20(LANモデル)に
    内蔵されているXTバス接続のLANカードも、これに該当します。もちろんTOWNS
    モードでも使用可能です。
    
*FMV-TOWNS用LANカード (FMV-181/182)

    FMVシリーズ用純正オプションのISAバス用LANカードです。PnP非対応ですが、
    ATモードだけでなくTOWNSモードでも使用可能なようです。ただし、富士通はこ
    のカードの動作を保証しているわけではないようです。


3.2 Driver

*DOS用ODIドライバ関連

   ・富士通純正DSLINKカード(FM50L-186,186A,187,187A)
      FMRLAN.COM
      Novellのサイト等より入手できるようです。また、FMR用のNetwareクライアン
      ト関連モジュールに添付されていることも多いようです。他にLanWarkplace富
      士通用にも添付されているようです。ただし、Netware 5以降はFMR用モジュー
      ルは含まれていないので注意してください。

   ・富士通純正LANカード(FM50L-188,189)
      FJN01F.COM
      LANカード添付のドライバ。他に入手方法はありませんので、カード単体で入手
      すると意外に苦労します。

   ・RATOC製LANカード(REX-3586/87)
      REX3586.COM
      LANカード添付のドライバ。

   ・FMV-TOWNS用純正LANカード(FMV-183/184)
      FJN00I.COM
      LANカード添付のドライバ。FMV-TOWNSのLAN内蔵モデル(SBL,SHL,SH20)のリカバ
      リーディスクにも、ディスクイメージとしてドライバが収録されています。

   ・Netware 環境ドライバ
      LSL.COM
      Novellのサイトより入手できるようです。また、FMR用のNetwareクライアント関
      連モジュールに添付されていることも多いようです。Netware 5以降はFMR用モ
      ジュールは含まれていないので注意してください。AT互換機用のNovell NE2000
      CompatibleのLANカードなどにもLSL.COMが付いている事がありますのが、たぶ
      ん使用不可だと思いますので混ざらないように気をつけてください。

   ・ODI-Packet変換ドライバ
      ODIPKT.EXE
      TCP/IP for TOWNSに添付されているフリーソフトウェアです。


*DSLINKドライバ
    
    富士通純正DSLINKカードを使用する場合、富士通製のDSLINKアプリケーションを
    利用することの出来るドライバです。Microsoft LAN-Manager用のNDIS/ODIドラ
    イバが入っています。


*Windows95
    
    純正LAN/DSLINKカードおよび互換品の場合、TOWNS用Windows95に標準でドライバ
    が用意されています。Windows95のインストール時にボードを挿しておいた場合、
    自動的に認識しドライバを組み込んでくれます。
    
    FMTOWNSII SNの場合も、TOWNS用Windows95に標準でドライバが用意されています
    が、唯一PCMCIAタイプのLANカードを使用するため、PCカードイネーブラも同時
    に組み込まれるようです。
    
    FMV-TOWNSのATモードの場合は、純正LANカードに付属のドライバディスクを使用
    し、FMV-183/184用ドライバを組み込みます。ただし、ドライバディスク内のユ
    ーティリティを使用して、PnPを無効化した場合はFMV-181/182用ドライバを組み
    込む必要がある場合があります。
    
    RATOC製LANカードの場合は、Homepageからダウンロードできるようです。


3.3 TCP/IP for TownsOS

    TownsOS および DOS 上で動作するTCP/IPプロトコルスタックには、以下のものが
    存在します。
    
*TCP/IP for TOWNS
    
    (山)氏によるTownsOS用TCP/IP環境です。WATTCPの移植版で、ダイヤルアップによ
    るPPP接続(dosppp)が可能で、Ethernet接続もサポートされています。WATTCPライ
    ブラリはリアル版とネイティブ版が存在し、ネイティブ版ではBSD互換のソケット
    ライブラリが用意されています。
    
    Ethernet接続時は、添付のODI<=>Packet変換ドライバとLANカード毎のODIドライ
    バが必要になりますが、TCP/IPでUNIXやWindowsのホストに接続したり、ダイヤル
    アップルータ経由でプロバイダ接続をすることも可能なようです。

*TEEN (MCD対応版)
    
    XMaZ Projectによる、MS-DOS用TCP/IPプロトコルスタックです。本来はPC-88VA/
    PC-9801用ですが、RS-232Cドライバ MCDを使用することでMCD版のTEENが動作しま
    す。但し、当然ながら対応アプリケーションにはPC-9801に機種依存するものが少
    なくありません。また、TOWNSはEthernet接続には非対応です。

*Inet BIOS Driver

    ASCII提唱(だったと思う)のTCP/IPプロトコルスタックです。富士通製TCP/IPアプ
    リケーションが使用可能です。TISPなどのアプリケーションを使用して、UNIXの
    ホストへ接続可能です。FM用だけでなく、98/AT用も存在します。


3.4 TCP/IP for Windows Environment

    486以上のTOWNSの場合、Windows95が動作しますので、世の中のWindows95対応の
    アプリケーションがほぼ動作します。これについては今更説明するまでも無いで
    しょう。Windows95についてはWinSockが問題無く動作するので、特に書くべきこ
    とはありません。
    
    Windows 3.1 の場合、Oh!FM誌の記述にもあるようにTrumpet Winsockが動作しま
    す。Trumpet WinsockはWindows 3.1 の世界での事実上標準のTCP/IPプロトコル
    スタックです。Winsock対応アプリケーションが使用可能です。Netscape Navig-
    atorなどの著名アプリが動作します。



4. TOWNS の TCP/IP 環境用のソフトウェア

4.1 TCP/IP for TOWNS 用ソフトウェア

    TCP/IP for TOWNS では以下のソフトウェアが動作します。
    
*「PING.EXE/EXP」
    TCP/IP for TOWNS に付属しているサンプルプログラムです。ネームサーバにも対
    応しています。

*「TCPPORT.EXE」
    TCP/IP for TOWNS に付属しているサンプルプログラムです。シリアルポートへの
    出力を乗っ取り、TCPストリームとして送受信することが出来るので、単純な作業
    なら既存の通信アプリやオートパイロットで行なえます。

*「FTP.EXP」
    TCP/IP for TOWNS に付属しているサンプルプログラムです。GNU FTPの移植版で
    す。フル機能が実装されており、非常に安定して動作します。

*「Tiny HTTP Client 「Air」 0.05α」
    DJ☆Uchiさんによる、HTTPクライアントです。コンソール上で動作するexpプログ
    ラムです。HTTPサーバのファイル受信、データ送信をサポートしていますので、
    掲示板への書きこみも行なうことが出来ます。現在TownsSHELL版が開発中です。
    
*「HTTPX rel.004」
    HOTARUIKA☆による、HTTPクライアントです。コンソールで動作するexe形式プロ
    グラムです。HTTPサーバからのファイル受信を行なうことが出来ます。サーバの
    種類や状態によって動作しない場合があります。また、ネームサーバには対応し
    ていませんが、代わりにhostsファイルに対応しています。
    
*「やぎさん郵便」
    へるみさんによる、メールクライアントです。SMTPプロトコルでメールを送信す
    ることが出来ます。

*「TDL-NET」
    DJ☆Uchiさんによる、簡易telenetです。同氏によるTownsSHELLアクセス管理機
    構「TCPIPFM Socket Management Library(TDL)」に準拠した、TDL用サンプルア
    プリケーションです。

*「F-WEB386」
    長船俊さんによる、F-BASIC386用のWebブラウザで、現在開発中です。内部的に
    AirやHTTPXを呼び出す構造を実装しています。

*「nslookup」
    HOTRUIKA☆による、UNIXのnslookupコマンドの移植版です。ドメイン名からIPア
    ドレスを調べる、EXP形式プログラムです。

*「ぴんぐー」
    HOTRUIKA☆による、TownsSHELL上で動作するGUI版PINGコマンドです。

*「そよかぜ」
    HOTRUIKA☆による、TownsSHELL上で動作するHTTPクライアントです。通信コント
    ロールのみを行なうプログラムであり、操作用インターフェイスを持ちません。

*「空知」
    HOTRUIKA☆による、TownsSHELL上で動作する「そよかぜ」用アドインアプリケ
    ーションです。「そよかぜ」に対して通信指示を送信します。テキストビュア
    ーと組み合わせることで、簡易テキストブラウザとして動作します。



4.2. TEEN用ソフトウェア

    TEENには多数のクライアントが存在しますが、ハードウェアに依存するために、
    TOWNSでも動作するものは限られます。残念ながら、386TOWNSのモデルUXでは、
    2400bpsで辛うじて動作する程度で実用にはならないそうです。FIFO付きのTOWNS
    なら、もう少し速度を上げても動作するかもしれません。
    

4.3 Windows 用ソフトウェア 

    今更言うまでもありませんが、Windows95上ではWinsockを使用したアプリケーシ
    ョンが問題無く動作するため、Internet Explorerや各種ネットワーククライア
    ントがPC/AT互換機版Windows95と同様に動作します。
    
    Windows 3.1上ではWin32sに対応したWinsockアプリケーションが動作するようで
    すが、Win32s自体環境に厳しく依存しますので、実際は難しいでしょう。Win32s
    およびWinsockが正常に動作すれば、Netscape Navigator や NCSA Mosaicのよう
    なブラウザやFTPなどネットワーククライアントが使用出来ます。現在のところ
    16bit版 Internet Explorer の動作報告はありませんので、機種依存があると思
    われます。


4.4 Inet BIOS 用ソフトウェア

    富士通製のTISPというパッケージが存在し、TCP/IPでUNIXホストへ接続すること
    が可能なようです。これにはTELNETなども用意されているようです。なお、基本
    的に富士通のシステム販売用ですので、DSLINKカードが必須でありシリアルポー
    ト接続は出来ないようです。
    
    Inet BIOS 自体、機種を越えた共通の通信手順ですので、機種依存する部分が無
    ければ多機種用にリリースされているInet BIOS用TCP/IPアプリケーションも動
    作するものと思われます。が、実際に見かけることは難しいと思われます。



5. TownsOS における TCP/IP 開発環境

    これから TCP/IP for TOWNS を利用してTownsOS用TCP/IPアプリケーションの制
    作をしてみようという方への情報です。


5.1 TCP/IP for TOWNS のパッケージ仕様

    現在 TCP/IP for TOWNS (以下、TCPIPFM) には、プロテクトモード版のライブラ
    リとリアルモード版のライブラリが存在し、これらをリンクすることでTCP/IPア
    プリケーションを作成することが出来ます。TCPIPFMに付属している/アプリケー
    ションも、これらのライブラリによって作成されています。
    
    また、TCPIPFMの中核である ダイヤルアップPPP接続プログラム dosppp は、
    Microsoft C 5.1 + Turbo ASM によって構成されており、ソースが公開されてい
    ますので、必要に応じてリコンパイルすることも可能です。
    
    以下では、主にアプリケーション作成を念頭に、ライブラリの仕様について示し
    ます。


5.2 TCP/IP for TOWNS のプロテクトモード版ライブラリ

    TCPIPFM のプロテクトモード版ライブラリは、32bit版 Wataloo TCPライブラリ
    (GCC版) を High-C 1.7/1.4 で動作するように移植したものです。ドライバに
    対するインターフェイスは、FTP Software, Inc.によるパケットドライバイン
    ターフェイスに準拠しています。また、タイマ周辺処理をAT依存からC言語汎用
    に、DPMIファンクションコールをDOS|Extender汎用のファンクションに変更さ
    れています(つまり、DOS|Extenderとパケットドライバさえ動作すれば、TOWNS
    に限らず動作します)。ライブラリ自体の関数仕様は、オリジナルと変わりま
    せんので、AT版/PC98版のwattcpアプリケーションが、通信部に関してだけは移
    植可能です。
    
    TCPIPFM のプロテクトモード版ライブラリ(以下、WATFMP) の特徴として、BSD
    互換のソケット関数互換ライブラリが準備されていることが挙げられます。も
    ともとGCC版WATTCPにサンプルとして付属していた不完全なものでしたが、TCP
    IPFMの移植者である(山)氏の手によって、現在ではかなり動作するものになっ
    ています。実際、TCPIPFM付属のFTPに使用されています。このソケットライブ
    ラリを用いることで、UNIX系のTCP/IPアプリケーションのノウハウを活かして
    移植を行なうことが可能です。
    
    但し、OSとして入出力機能が実装されているBSDのソケットと、ライブラリ関
    数として実装されているWATFMPでは、挙動がだいぶ異なりますので、それなり
    に試行錯誤は必要です。
    
    なお、TCPIPFMに付属しているWATFMPのサンプルプログラムに関して、そのま
    まのソースでは動作しないものもいくつか存在しますので、注意してくださ
    い(PING.EXPなど、インクルードするヘッダファイルを変更する必要がありま
    す)。
    
    WATFMPによるプロテクトモードアプリケーションをTownsOS上で動作させる場
    合の注意点として、コンベンショナルメモリの空き領域が上げられます。パ
    ケット/ODIドライバによってかなりコンベンショナルメモリが減少している
    ことが予想されますが、WATFMP自体の動作にも、いくらかのコンベンショナ
    ルメモリを要求されます。その為、プログラムのリンク時に、
        -maxreal 65535
    などと指定する必要があります。TownsSHELLアプリの場合は、リンカで指定
    することが出来ませんので、autoexec.bat中にあるcontrol.exeの起動パラ
    メータに追加するのが妥当でしょう。マシン環境によっては、これでも動作
    しない場合がありますが、その場合は諦めるしかありません。コンベンショ
    ナルメモリを広く取るために、DOS6ベースのほうが推奨されるのは、言うま
    でもありません。
    
    ソケットを利用したクライアントアプリケーションの一般的な動作手順は、
    以下のようになります。
    
        0 ) SOCKET.H (TCP.H)をインクルードする。
        ↓
        1 ) ソケットライブラリの初期化を行なう( sock_init(); )
        ↓
        2 ) ソケットを生成する( socket(); )
        ↓
        3 ) ソケットを使ってホストに接続する( connect(); )
        ↓
        4 ) ホストとやりとりする
            ( read_s(),write_s(), sock_read(), sock_write() )
        ↓
        5 ) ソケットをクローズする( sock_close(); )
        
    0) に関しては、BSD互換ソケットライブラリを使用する場合は、SOCKET.H
    をインクルードします。普通にWATTCPの手順にしたがってプログラミングする
    場合は、TCP.Hをインクルードします。
    
    1) でWATTCPのソケット機能の初期化を行ないます。もしコンベンショナルメ
    モリが不足している場合は、ここで関数内部でexit(1)されますので注意して
    ください。この為、GUIアプリでは最初にソケット機能の初期化をかける必要
    があります(勝手にexitされては大変ですから)。
    
    2) は、ソケットライブラリの場合にソケットを生成します。
    
    3) は、connect()関数でホストに接続します。ホストのIPアドレスやポート
    番号は、ソケットを扱うための構造体で渡します。WATTCPではtcp_open()に
    相当します。
    
    4) ではホストと直接やり取りします。ソケットライブラリでは、read_s(),
    write_s()で送受信を行ないます。WATTCPではsock_read(),sock_write()で、
    指定したバイト数の送受信を行ないます。sock_read(),sock_write()関数で
    は、指定したバイト数の送受信を終えるまで処理が戻ってきませんので、そ
    れでは困る場合は、sock_fastread(),sock_fastwriteを使用します。どちら
    の送受信関数も、送受信状況をintで返します。
    
    5) では、最後にソケットをクローズして終了です。
    
    
    実際にホストとのデータの送受信に関しては、インターネットに関する規定
    文書であるrfcに沿って行なう必要があります。



5.3 TCP/IP for TOWNS のリアルモード版ライブラリ

    TCPIPFM のリアルモード版ライブラリは、16bit版の Wataloo TCPライブラリ
    (Turbo C版) を Microsoft C 5.1 で動作するように移植したものです。ドライ
    バに対するインターフェイスは、プロテクトモード版と同じくFTP Software, 
    Inc.によるパケットドライバインターフェイスに準拠しており、タイマ周辺処
    理をAT依存からC言語汎用に書きかえられています。ライブラリ自体の関数仕様
    はオリジナルと変わりませんので、AT版/PC98版のwattcpアプリケーションが、
    通信部に関してだけは移植可能です。
    
    プロテクトモード版と違い、BSD互換ソケットライブラリが準備されていませ
    んので、WATTCPの独自APIを使用してプログラミングする必要があります。OS
    として入出力機能が実装されているBSDのソケットと、WATTCPのライブラリ関
    数ではだいぶ仕様が異なりますので、かなりの試行錯誤が必要です。
    
    TCPIPFMに付属しているリアル版WATTCPのサンプルプログラムでは、PING や
    FINGER,POP3DUMPなどが用意されており、Microsoft C 5.1 でコンパイルする
    ことができます。但し、環境によっては若干の障害がある模様です(ドメイン
    ネームで指定されたhostへのresolve()が出来ない場合があるようです)。
    
    リアル版WATTCPでソケットを利用したクライアントアプリケーションの一般
    的な動作手順は、以下のようになります。
    
        0 ) TCP.H をインクルードする。
        ↓
        1 ) ソケットライブラリの初期化を行なう( sock_init(); )
        ↓
        2 ) ソケット構造体を宣言する( tcp_Socket s; )
        ↓
        3 ) ホストのポートを開く( tcp_open(); )
        ↓
        4 ) ホストとやりとりする( sock_read(), sock_write() )
        ↓
        5 ) ソケットをクローズする( sock_close(); )
        
    0) に関しては、WATTCPを利用するために TCP.H をインクルードします。
    
    1) でWATTCPのソケット機能の初期化を行ないます。もしコンベンショナルメ
    モリが不足している場合は、ここで関数内部でexit(1)されますので注意して
    ください。
    
    2) は、ソケット送受信領域用の構造体を宣言します。ソケットの生成を明示
    する関数は存在しません。
    
    3) は、tcp_open()関数でホストに接続します。ホストのポート番号もここで
    指定します。
    
    4) ではホストと直接やり取りします。WATTCPではsock_read(),sock_write()
    で、指定したバイト数の送受信を行ないます。sock_read(),sock_write()関
    数では、指定したバイト数の送受信を終えるまで処理が戻って来ないので、
    注意する必要があります。どちらの関数も、送受信状況をintで返します。
    
    5) では、最後にソケットをクローズして終了です。
    
    
    実際にホストとのデータの送受信に関しては、インターネットに関する規定
    文書であるrfcに沿って行なう必要があります。
    
    なお、リアル版WATTCPのAPIを利用したアプリケーションをプロテクトモード
    版に移植する場合、若干の注意が必要です。一般に言われていることですが、
    WATFMPが利用を意図している High-C Compiler は非常にANSI-Cに厳密なコン
    パイラであり、型キャストに関するエラーを大量に発します。また、引数に
    NULLを取っている関数も多くエラーになるようですので、注意して下さい。


5.4 TCP/IP for TOWNS でのコンパイル&リンク

    リアル版WATTCPの場合、WATTCPSM.LIB をリンクします。標準ライブラリと結
    合してしまうのが手っ取り早いでしょう。Microsoft C 5.1 の場合、インス
    トール時に標準ライブラリの結合処理が行なわれますので、これにWATTCPを
    追加しておけば、簡単に扱えます。ただし、リアル版WATTCP自体がスモール
    モデルでコンパイルされているため、他のメモリモデルで実行ファイルを生
    成したい場合は、ライブラリ自体もリコンパイルする必要があります。
    
    プロテクトモード版WATTCPの場合も同じくライブラリをリンクします。他に
    必要なHigh-Cのライブラリがいくつか存在しますので、忘れないように注意
    します(特に、NA.LIB などが忘れがちです)。TLINK のオプションとして、
    -maxreal 65535 としてコンベンショナルメモリを確保する必要があります。
    ただし、TownsSHELLアプリの場合はこの限りではありません。
    
    一般的なGUIライブラリを使用したアプリケーションでのリンクファイルの
    例を以下に示します(不要なものが含まれているかもしれませんが、SHELL
    化への布石と言うことで納得してください)。

    -------------------------------------------------------------------
    MAIN.obj
    MAIN_GUI.obj
    -stack 1600000
    -lib d:\HC386\SMALL\GUIDBG
    -lib d:\HC386\SMALL\HCE
    -lib d:\HC386\SMALL\NA
    -lib d:\HC386\SMALL\SND
    -lib d:\HC386\SMALL\TBIOS
    -lib d:\HC386\SMALL\GUI
    -lib d:\HC386\SMALL\FMCFRB
    -lib d:\HC386\SMALL\XLD_EXG
    -lib d:\HC386\SMALL\T_OS
    -lib d:\HC386\SMALL\VECTCG_H
    -lib d:\hc386\einlib\eintm.lib
    -lib d:\hc386\einlib\eindd\lib\eindd.lib
    -lib d:\tcpfmtf\source\watfmp\lib\libwatcp
    -sym
    -tc
    -maxreal 65535
    -relexe MAIN.EXG
    -------------------------------------------------------------------
    


5.5 TCPIPFM Socket Management Library (TDL)

    TCPIP for TOWNS をTownsSHELLアプリケーションにおいて利用する場合、い
    くつかの問題点があります。それは、WATTCPはプログラムに対して静的にリ
    ンクされるライブラリであるため、複数のプログラムからのアクセス競合を
    引き起こす可能性があるということです。これは本来ならOSレベルで実装さ
    れるのが好ましい機能であるわけですが、WATTCPの実装の都合上やむをえな
    いところです。
    
    「TCPIPFM Socket Management Library 」(以下、TDL)は、DJ☆Uchi氏によ
    るTownsSHELL用アプリケーションライブラリであり、TownsSHELL上アプリか
    らのTCP/IP通信アプリケーションからの通信要求を管理し、通信を一括処理
    します。よって、この仕様に沿って作成されたアプリでは複数アプリからの
    通信アクセス競合を気にする必要がなくなります。
    
    対応通信アプリケーションでは、TDL.DLLを動的にリンクし、実際の通信は
    TDL.EXGが行ないます。ただし、対応通信アプリケーションではアイドルタ
    スクによるデータ送信・受信処理が推奨されます。
    
    実際のTDL対応アプリケーションでの一般的な動作手順は、以下のようにな
    ります。
    
    1 ) アプリケーション起動時の処理
        1-1) TDLの初期化を行う。( TDL(); )
        1-2) アイドルタスクとして登録する。( MMI_SetIdleTaskFunc(); )
    ↓
    2 ) イベント関数内での処理
        2-1) ソケットの接続要求を行う。( TDL_SocketRequest(); )
        2-2) ソケットの切断要求を行う。( TDL_SocketClose(); )
    ↓
    3 ) アイドルタスク内での処理
        3-1) TDLが使用可能かどうか調べ、処理を行うかどうか決める。
         ( TDL(); )
        3-2) ソケットの接続要求の結果(ソケット番号)を受け取る。
             ( TDL_SocketGet(); )
        3-3) ソケットでデータ読込,書込を行う。
             ( TDL_SocketRead(); , TDL_SocketWrite(); )
    ↓
    4 ) アプリケーション終了時の処理
        4-1) アイドルタスクを登録解除する。( MMI_SetIdleTaskFunc(); )
        4-2) リクエスト中のソケット接続要求を取り下げる。
             ( TDL_SocketCancel(); )
        4-3) 接続中のソケットに対し切断要求等を行う。
             ( TDL_SocketClose(); )

    なお、上記の動作手順は、TDLのマニュアルによるものです。




Contents:

  1. TOWNS の TCP/IP 環境についての情報源
  2. TOWNS の TCP/IP 環境について
  3. Hardware と Driver
      3.1 Hardware
      3.2 Driver
      3.3 TCP/IP for TOWNS
      3.4 TCP/IP for Windows Environment
  4. TOWNS の TCP/IP 環境用のソフトウェア
      4.1 TCP/IP for TOWNS 用ソフトウェア
      4.2 TEEN 用ソフトウェア
      4.3 Windows 用ソフトウェア 
      4.4 Inet BIOS 用ソフトウェア
  5. TownsOS における TCP/IP 開発環境
      5.1 TCP/IP for TOWNS のパッケージ仕様
      5.2 TCP/IP for TOWNS のプロテクトモード版ライブラリ
      5.3 TCP/IP for TOWNS のリアルモード版ライブラリ
      5.4 TCP/IP for TOWNS でのコンパイル&リンク
      5.5 TCPIPFM Socket Management Library (TDL)



                           TOWNS-TCPIP-FAQ-J
                    HOTARUIKA☆ FZA06045@nifty.ne.jp
                          (c) 2001 HOTARUIKA☆