⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 186.htm

📁 VB的一些网络编程的例子,个人认为还不错。大家一起来研究一下.
💻 HTM
字号:
<p>使用ASP建立Http组件</p>
<p></p>
<p>p>生成HTTP组件自己动手,丰衣足食,下面介绍如何生成自己的AspHttp组件。</p>
<p></p>
<p>  使用Winsock控件,下面将介绍怎么来建立一个简单的HTTP组件。</p>
<p></p>
<p>  记住先选择mswinsck.ocx控件下面的代码是在VB6中编译的。</p>
<p></p>
<p>  代码如下:</p>
<p></p>
<p>  Private WithEvents objWinSock As MSWinsockLib.Winsock</p>
<p></p>
<p>  Private strURL As String</p>
<p></p>
<p>  Private strURI As String</p>
<p></p>
<p>  Private strServer As String</p>
<p></p>
<p>  Private nPort As Long</p>
<p></p>
<p>  Private strHead As String</p>
<p></p>
<p>  Private strData As String</p>
<p></p>
<p>  Private bConnected As Boolean</p>
<p></p>
<p>  </p>
<p></p>
<p>  Public Function httpGet(URL As String) As String</p>
<p></p>
<p>  Set objWinSock = New MSWinsockLib.Winsock</p>
<p></p>
<p>  strURL = URL</p>
<p></p>
<p>  ParseURL</p>
<p></p>
<p>  Connect</p>
<p></p>
<p>  SendRequest</p>
<p></p>
<p>  objWinSock.Close</p>
<p></p>
<p>  strHead = Left(strData, InStr(strData, vbCrLf & vbCrLf))</p>
<p></p>
<p>  strData = Right(strData, Len(strData) - InStr(strData, vbCrLf & vbCrLf))</p>
<p></p>
<p>  httpGet = strData</p>
<p></p>
<p>  End Function </p>
<p></p>
<p>  Private Sub ParseURL()</p>
<p></p>
<p>  If LCase(Left(strURL, 7)) = "http://" Then</p>
<p></p>
<p>  If InStr(8, strURL, "/") = 0 Then</p>
<p></p>
<p>  strServer = Right(strURL, Len(strURL) - 7)</p>
<p></p>
<p>  strURI = "/"</p>
<p></p>
<p>  Else</p>
<p></p>
<p>  strServer = Mid(strURL, 8, InStr(8, strURL, "/") - 8)</p>
<p></p>
<p>  strURI = Right(strURL, Len(strURL) - InStr(8, strURL, "/") + 1)</p>
<p></p>
<p>  End If</p>
<p></p>
<p>  If InStr(strServer, ":") $#@60;$#@62; 0 Then</p>
<p></p>
<p>  nPort = CLng(Right(strServer, Len(strServer) - InStr(strServer,</p>
<p></p>
<p>  ":")))</p>
<p></p>
<p>  strServer = Left(strServer, InStr(strServer, ":") - 1)</p>
<p></p>
<p>  End If</p>
<p></p>
<p>  If nPort = 0 Then nPort = 80</p>
<p></p>
<p>  Else</p>
<p></p>
<p>  Err.Raise vbObjectError, "Error", "错误的URL"</p>
<p></p>
<p>  End If</p>
<p></p>
<p>  End Sub </p>
<p></p>
<p>  Private Sub Connect()</p>
<p></p>
<p>  Dim dtStart As Date</p>
<p></p>
<p>  dtStart = Now()</p>
<p></p>
<p>  objWinSock.RemoteHost = strServer</p>
<p></p>
<p>  objWinSock.RemotePort = nPort</p>
<p></p>
<p>  objWinSock.Connect</p>
<p></p>
<p>  Do Until bConnected</p>
<p></p>
<p>  DoEvents</p>
<p></p>
<p> ? DateDiff("s", dtStart, Now) $#@62; 30 Then</p>
<p></p>
<p>  Err.Raise vbObjectError, "Error", "连接超时"</p>
<p></p>
<p>  End If</p>
<p></p>
<p>  Loop</p>
<p></p>
<p>  End Sub </p>
<p></p>
<p>  Private Sub SendRequest()</p>
<p></p>
<p>  Dim strCmd</p>
<p></p>
<p>  Dim dtStart As Date</p>
<p></p>
<p>  dtStart = Now()</p>
<p></p>
<p>  strCmd = "GET " & strURI & " HTTP/1.0" & vbCrLf</p>
<p></p>
<p>  strCmd = strCmd & "User-Agent: aspHttp.http" & vbCrLf</p>
<p></p>
<p>  strCmd = strCmd & "Accept: */*" & vbCrLf</p>
<p></p>
<p>  strCmd = strCmd & vbCrLf</p>
<p></p>
<p>  objWinSock.SendData strCmd</p>
<p></p>
<p>  Do Until objWinSock.State = sckClosing</p>
<p></p>
<p>  DoEvents</p>
<p></p>
<p>  If DateDiff("s", dtStart, Now) $#@62; 60 Then</p>
<p></p>
<p>  Err.Raise vbObjectError, "Error", "请求超时"</p>
<p></p>
<p>  End If</p>
<p></p>
<p>  Loop</p>
<p></p>
<p>  End Sub </p>
<p></p>
<p>  Public Property Get Head() As Variant</p>
<p></p>
<p>  Head = strHead</p>
<p></p>
<p>  End Property </p>
<p></p>
<p>  Public Property Get Body() As Variant</p>
<p></p>
<p>  Body = strData</p>
<p></p>
<p>  End Property </p>
<p></p>
<p>  Private Sub objWinSock_DataArrival(ByVal bytesTotal As Long)</p>
<p></p>
<p>  Dim strTemp</p>
<p></p>
<p>  objWinSock.GetData strTemp, vbString</p>
<p></p>
<p>  strData = strData & strTemp</p>
<p></p>
<p>  End Sub</p>
<p></p>
<p>  Private Sub objWinSock_Connect()</p>
<p></p>
<p>  bConnected = True</p>
<p></p>
<p>  End Sub </p>
<p></p>
<p>  Private Sub objWinSock_Error(ByVal Number As Integer, Description As String, _ </p>
<p></p>
<p>  ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, _</p>
<p></p>
<p>  ByVal HelpContext As Long, CancelDisplay As Boolean)</p>
<p></p>
<p>  Err.Raise vbObjectError, "Error", "Winsock Error: " & Number &</p>
<p></p>
<p>  vbCrLf & Description</p>
<p></p>
<p>  CancelDisplay = True</p>
<p></p>
<p>  End Sub 编译该组件,然后按照下面的步骤注册该组件</p>
<p></p>
<p>  C:\net stop iisadmin /y</p>
<p></p>
<p>  C:\mtxstop编译成Active Dll</p>
<p></p>
<p>  C:\net start w3svc在ASP中调用这个组件</p>
<p></p>
<p>  $#@60;%@ Language=VBScript %$#@62;</p>
<p></p>
<p>  $#@60;HTML$#@62;</p>
<p></p>
<p>  $#@60;HEAD$#@62;</p>
<p></p>
<p>  $#@60;META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"$#@62;</p>
<p></p>
<p>  $#@60;/HEAD$#@62;</p>
<p></p>
<p>  $#@60;BODY$#@62;</p>
<p></p>
<p>  $#@60;%</p>
<p></p>
<p>  Dim obj</p>
<p></p>
<p>  Set obj = Server.CreateObject("aspHttp.http")</p>
<p></p>
<p>  Response.Write obj.httpGet("http://www.chinaasp.com.cn")</p>
<p></p>
<p>  %$#@62;</p>
<p></p>
<p>  $#@60;/BODY$#@62;</p>
<p></p>
<p>  $#@60;/HTML$#@62;  </p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -