概要
vbsの作法調べてみた。
winsock使ってみる。
環境
windows7 64bit
MSWinsock.Winsock
VB6のactivexなので、却下。
OSWINSCK.Winsock
配布されていたので、使ってみる。
サンプルコード
Option Explicit
Dim oWin
Dim sURL
Dim sPage
Dim sServer
Dim nPort
Dim sBuffer
Dim sSource
Dim bClose
Dim sProxy
Sub soc_OnClose()
oWin.CloseWinsock
WScript.Echo sSource
bClose = True
Set oWin = Nothing
End Sub
Sub soc_OnConnect()
oWin.SendData "GET " & sPage & " HTTP/1.0" & vbCrLf & vbCrLf
End Sub
Sub soc_OnDataArrival(ByVal bytesTotal)
oWin.GetData sBuffer
sSource = sSource & sBuffer
End Sub
Sub soc_OnError(ByVal Number, Description, ByVal Scode, ByVal Source, ByVal HelpFile, ByVal HelpContext, CancelDisplay)
WScript.Echo Number & ": " & Description
oWin.CloseWinsock
End Sub
sURL = ""
sPage = ""
sServer = ""
nPort = 80
sBuffer = ""
sSource = ""
bClose = False
sProxy = ""
sURL = InputBox("Enter the URL", "OSWINSCK test", "http://www.ostrosoft.com")
sServer = Trim(sURL)
If InStr(sServer, "://") > 0 Then sServer = Mid(sServer, InStr(sServer, "://") + 3)
If InStr(sServer, "/") > 1 Then
sPage = Mid(sServer, InStr(sServer, "/"))
sServer = Left(sServer, InStr(sServer, "/") - 1)
If InStr(sPage, "#") > 1 Then sPage = Left(sPage, InStr(sPage, "#") - 1)
Else
sPage = "/"
End If
If InStr(sServer, ":") > 1 Then
nPort = Mid(sServer, InStr(sServer, ":") + 1)
sServer = Left(sServer, InStr(sServer, ":") - 1)
End If
If sServer <> "" Then
Set oWin = CreateObject("OSWINSCK.Winsock")
WScript.ConnectObject oWin, "soc_"
If sProxy = "" Then
oWin.Connect CStr(sServer), CLng(nPort)
Else
sPage = "http://" & sServer & sPage
oWin.Connect CStr(sProxy), 80
End If
Else
sSource "Invalid URL"
bClose = True
End If
While Not bClose
WScript.Sleep 1
Wend
以上。