From pc-sig-request@tkyux.phys.s.u-tokyo.ac.jp Mon Oct 30 15:30:47 1995 Date: Mon, 30 Oct 95 15:25:31 JST From: Hirofumi Fujii Message-Id: <9510300625.AA14789@onlnews.kek.jp> To: pc-sig@phys.s.u-tokyo.ac.jp Subject: VisualBasic control for winsock 藤井啓文@KEKです 少し前にKEKデータセンターの長坂さんが、Visual Basic 用の winsock コントロールを見つけてきたと書きましたが、少しテストしてみたので、 報告します。結論から先に言えば、お勧めです。 これは Ian Blenke (iblenke@ic1d.harris.com) 氏の WSANET v1.08alpha です。wsanet8a.zip というパッケージで出回っています。 Copyright Notice は、少し長いので紹介しません。このパッケージに付属 している readme.txt を読んで下さい。基本的に、「配布に伴う費用以外は とるな、商用に使う場合は著者に連絡しろ」という古き良き時代の態度です。 ソースはもちろん、サンプルも付属しています。 Client Coltrol だけでなく Server Control もあります。 さて、使い方ですが、Visual Basic での使い方を言葉で説明するのは、むつ かしいのですが、、 最も簡単な例として、私がよく挙げる Daytime Clinet Program を作って みましょう。これは、Server に Port 13 で tpc 接続すれば、server から 日付と時刻の文字列を送ってきて、server から接続を切ってきます。 (1) Visual Basic を起動し、「ファイル」「ファイルの追加」で、wsanet.vbx   を加える(注:パッケージの中の wsanet.vbx を使ってはいけません。   パッケージの中の release.vbx を rename して使います)。   すると、INI と Server と Client の3つのコントロールが加わる。 (2) フォーム(Form1)にテキストボックスコントロールを張り付ける(Text1)。   これを Hostname を入れる場所として使う。 (3) Form1 にもう一つテキストボックスコントロールを張り付ける(Text2)。   これは、Server からのメッセージを出力するために使うので、MultiLine   プロパティを TRUE にしておく。 (4) Form1 に、プログラムのスタートボタンとして使うコマンドボタンコントロール   (Command1)を張り付ける。Caption プロパティをそれらしいもの(start とか   connect とか)にしておくのがよいでしょう。 (5) Form1 に、NetClient のコントロール(差し込む側の絵のやつ、受け口の方は   Server)を張り付ける(NetClient1)。 さて、これで枠はできたので、後はコードですが、まず、コマンドボタンをクリック して、コマンドボタンのコードウィンドウを開き ---------------------------------- Sub Command1_Click () Text2.Text = "" NetClient1.HostName = Text1.Text NetClient1.RemotePort = 13 NetClient1.Connect = True End Sub ---------------------------------- 次に、NetClient をクリックして、NetClient のコードウィンドウを開いて、 OnRecv を選びます。 -------------------------------------------------- Sub NetClient1_OnRecv () Do While NetClient1.RecvCount <> 0 Text2.Text = Text2.Text + NetClient1.RecvBlock Loop End Sub -------------------------------------------------- な、なんと、これで、できあがりです。文にすると長いのですが、実際やって みると、ほとんどマウスぐりぐりで終わりです(だってコードは上の 11 行 だけ、しかも実際に入れるのは内側の 7 行だけ)。 サンプルには finger/fingerd, smtp/smtpd, whois などがついてますので、 勉強目的にも良いと思います。 --- Hirofumi Fujii keibun@onlnews.kek.jp