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 ソケットオブジェクトのメソッドの説明
- 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)
- 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)
- 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)
- 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)
- 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")
- Close
接続を切断します。
例:
bsocket.Close
- 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
- 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.