BASP21ソケットオブジェクト

BASP21 DLL ソケットオブジェクトは、ASPの VBScript やVisual Basic、EXCEL VBA WSH(Windows Scripting Host)などから使えるTCP/IP通信をサポートするコンポーネントです。

Connect(dest,port[,timeout]) : コネクションを確立
Read(data[,mode]) : データを受信
ReadLine(data) : データを行単位で受信
Write(data) : データを送信
WriteHex(data) : データを16進で送信
Close() : 接続のクローズ
data=Read2([mode]) : データを受信 JScript対応
data=ReadLine2() : データを行単位で受信 JScript対応

BASP21 ソケットオブジェクトの使い方

CreateObjectメソッドで"basp21.socket" という名前でオブジェクトを作成します。
   Set bsocket = Server.CreateObject("basp21.socket")   ' ASP
   Set bsocket = CreateObject("basp21.socket")          ' VBA や VB
   Set bsocket = WScript.CreateObject("basp21.socket")  ' WSH
作成したオブジェクトでメソッドを呼出します。
   変数 = bsocket.メソッド名(パラメータ)

BASP21 ソケットオブジェクトのメソッドの説明

  1. Connect
    TCP/IPでホストとの接続を確立します。ストリーム・ソケットをサポートします。
    rc = bsocket.Connect(dest,port[,timeout])
    dest [in]  : 接続先のIPアドレスまたはネットワークホスト名。
    port [in]  : ポート番号。
    timeout [in]  : 通信タイムアウト値を秒単位で指定。省略値(120)。
    rc [out]  : 結果コードが数字で返されます。
      0 : 接続OK
      0以上 : Winsock Error
            典型的なエラーは 11001 ホスト名が見つからない 
      -1 : ソケットオープンエラー 
      -2 : タイムアウト
    例:
    rc = bsocket.Connect("www.hi-ho.ne.jp",80)
    
    
  2. Read
    接続先からデータを受信します。バイナリや16進フォーマットを指定できます。 JScriptでは Read2 メソッドを使ってください。
    rc = bsocket.Read(data[,mode])
    data [in]  : データを受取る変数。Visual BasicではVariantを指定します。
    mode [in]  : 受取るデータ形式を次のように指定します。
      0 : 文字列(省略値)
      1 : バイナリ。1バイトの配列でデータが返されます。
      2 : 16進形式の文字列。
      16 : 文字列。到着したデータをピークします。データは、バッファに残します。
      17 : バイナリのピーク。
      18 : 16進形式のピーク。
    rc [out]  : 結果コードが数字で返されます。
      0 : 受信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    rc = bsocket.Read(data)
    
    
  3. ReadLine
    接続先からデータを1行単位に受信します。 JScriptでは ReadLine2 メソッドを使ってください。
    rc = bsocket.ReadLine(data)
    data [in]  : データを受取る変数。Visual BasicではVariantを指定します。
    改行コードが削除されて渡されます
    rc [out]  : 結果コードが数字で返されます。
      0 : 受信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    rc = bsocket.ReadLine(data)
    
    
  4. Write
    接続先にデータを送信します。
    rc = bsocket.Write(data)
    data [in]  : 送信データ変数。Visual BasicではVariantを指定します。
    バイナリを送信する場合は、1バイト配列で指定します。
    rc [out]  : 結果コードが数字で返されます。
      0 : 送信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    rc = bsocket.Write(data)
    
    
  5. WriteHex
    接続先にデータを送信します。16進形式文字で指定されたデータを内部でバイナリに 変換して送信します。
    rc = bsocket.WriteHex(data)
    data [in]  : 送信データ変数。Visual BasicではStringを指定します。
    rc [out]  : 結果コードが数字で返されます。
      0 : 送信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    rc = bsocket.WriteHex("0001FFFF")
    
    
  6. Close
    接続を切断します。
    例:
    bsocket.Close
    
    
  7. Read2
    接続先からデータを受信します。バイナリや16進フォーマットを指定できます。
    data = bsocket.Read2([mode])
    data [out]  : データを受取る変数。Visual BasicではVariantを指定します。
    mode [in]  : 受取るデータ形式を次のように指定します。
      0 : 文字列(省略値)
      1 : バイナリ。1バイトの配列でデータが返されます。
      2 : 16進形式の文字列。
      16 : 文字列。到着したデータをピークします。データは、バッファに残します。
      17 : バイナリのピーク。
      18 : 16進形式のピーク。
    bsocket.Resultプロパティに結果コードが数字で返されます。
      0 : 受信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    data = bsocket.Read2()
    rc = bsocket.Result
    
    
  8. ReadLine2
    接続先からデータを1行単位に受信します。
    data = bsocket.ReadLine2()
    data [out]  : データを受取る変数。Visual BasicではVariantを指定します。
    改行コードが削除されて渡されます
    bsocket.Resultプロパティに結果コードが数字で返されます。
      0 : 受信OK
      0以上 : Winsock Error
      -1 : ソケットクローズ 
      -2 : タイムアウト
      -3 : データなし
    例:
    data = bsocket.ReadLine2()
    rc = bsocket.Result
    
    

サンプル

HTTPサーバからイメージを受信してファイルに保存します。
●Visual Basic
Dim bobj As Object, rc1 As Long, datax As Variant Dim bsocket As Object, datas As Variant Dim mode As Integer, lenx As Integer Set bobj = CreateObject("basp21") Set bsocket = CreateObject("basp21.socket") rc1 = bsocket.Connect("www.hi-ho.ne.jp", 80, 10) host = "Host: www.hi-ho.ne.jp" & vbCrLf ' Hostヘッダをつけること bsocket.write ("GET /babaq/images/basp21_b.jpg HTTP/1.0" & vbCrLf & host & vbCrLf) rc1 = bsocket.readline(datas) While rc1 = 0 And Len(datas) > 0 ' ヘッダーを読み飛ばす rc1 = bsocket.readline(datas) Wend rc1 = bsocket.read(datax, 1) ' イメージをバイナリ読込み mode = 0: lenx = 0 While rc1 = 0 lenx = lenx + UBound(datax) + 1 rc1 = bobj.BinaryWrite(datax, "d:\basp21.gif", mode) mode = mode + 1 rc1 = bsocket.read(datax, 1) Wend ●WSH
Set bobj = WScript.CreateObject("basp21") Set bsocket = WScript.CreateObject("basp21.socket") Set WshShell = Wscript.CreateObject("Wscript.Shell") WshShell.Run ("notepad") rc1 = bsocket.Connect("www.hi-ho.ne.jp", 80, 10) if rc1 <> 0 then bobj.debug "connect error " & rc1 WScript.quit end if cmd = "GET /babaq/images/basp21_b.jpg HTTP/1.0" host = "Host: www.hi-ho.ne.jp" & vbCrLf ' Hostヘッダをつけること ''プロキシ経由の場合 ''pass =bobj.Base64("user:pass") ' user:pass をBASE64 でデコード ''auth = "Proxy-Authorization: Basic " & pass ' プロキシ認証 ''cmd = "GET http://www.hi-ho.ne.jp/babaq/images/basp21_b.jpg HTTP/1.0" 'フルパスでアドレス指定 ''cmd = cmd & vbcrlf & auth rc1 = bsocket.write (cmd & vbCrLf & host & vbCrLf) if rc1 <> 0 then bobj.debug "write error " & rc1 WScript.quit end if bsocket.readline datas bobj.debug datas While rc1 = 0 And Len(datas) > 0 ' ヘッダーを読み飛ばす rc1 = bsocket.readline(datas) bobj.debug datas Wend rc1 = bsocket.read(datax, 1) ' イメージをバイナリ読込み mode = 0: lenx = 0 While rc1 = 0 lenx = lenx + UBound(datax) + 1 rc1 = bobj.BinaryWrite(datax, "d:\basp21.gif", mode) mode = mode + 1 rc1 = bsocket.read(datax, 1) Wend bobj.debug lenx

babaqフリーソフトのご使用上の注意

●プログラムを使って発生した損害に関しては、一切の責任を負いません。
●使用、配布に制限はありません。自由にお使いください。
●動作の保証はありません。
●動作を確認したOSは、Windows NT 4.0 とWindows 95/98/2000のみです。

Home


Copyright 1999 Tatsuo Baba,All rights reserved.