Winsock不建立Connected能實現什么呢???!!!
解决方案 »
- VB 6.0 韩文版
- 为什么不能运行,下面的小程序?
- 有没有现成的软件可以通过一条lpt或者com连接线实现两台电脑的文件传输??
- 第一次用API函数出问题了
- 只是送分!关于朋友的,不认识不要进
- VB访问注册表的小问题
- 送分100分:如何将"10101101"直接压缩到一个字节中去。
- 关于microsoft internet transfer控件的OpenURL方法的问题
- VB6下如何实现LAN广播,请指点,急急急急急!!先谢谢了
- sql server:有什么好办法,将一基表中相同两行,删去一行。
- 数据库-如何复制整个表,或把一个表的若干记录添加到另一个表,如何实现,高手进。
- 在上海哪里有买《Visual Basic 6 与Windows API 设计》??
Private Sub Command1_Click()
Winsock1.RemoteHost = "210.192.102.100" '设置连接的IP地址
Winsock1.RemotePort = 80 '设置连接的远程端口号
Winsock1.Connect '开始连接
if winsock1.stats=sckConnected then
msgbox "ok!"
end if
End Sub等了很久都没有回音。
用Internet Transfer控件
HTTP 的命令
GET 由Server下載資料
HEAD 由Server 下載的錶頭
TEXTSERACH 尋找Server的資料
LINK 連接
UNLINK 不連接
POST 上載資料到Server
PUT 取代Server的資料Server 的回應:
200 Okey
201 Created
202 Accepted
204 No Content
301 moved permanently
302 move temporarily
304 not modified
400 bad request
401 unauthorized
403 forbidden
404 not found
500 internal server error
501 not implemented
502 bad gateway
503 service unavailable
要通過Server的回應來判斷有沒有連接或發向服務器的命令有沒有成功﹐而不是通過Winsock1.state=sckconnected,這個
這是Winsock編程要注意的
實現妳說的問題﹐妳要仔細參考
超文本傳輸協議
http://rfc.sunsite.dk/rfc/rfc2068.html
http://rfc.sunsite.dk/rfc/rfc2616.html
“生成HTTP组件
自己动手,丰衣足食,下面介绍如何生成自己的AspHttp组件。
使用Winsock控件,下面将介绍怎么来建立一个简单的HTTP组件。
记住先选择mswinsck.ocx控件
下面的代码是在VB6中编译的。
代码如下:”
Private WithEvents objWinSock As MSWinsockLib.Winsock
Private strURL As String
Private strURI As String
Private strServer As String
Private nPort As Long
Private strHead As String
Private strData As String
Private bConnected As Boolean
Public Function httpGet(URL As String) As String
Set objWinSock = New MSWinsockLib.Winsock
strURL = URL
ParseURL
Connect
SendRequest
objWinSock.Close
strHead = Left(strData, InStr(strData, vbCrLf & vbCrLf))
strData = Right(strData, Len(strData) - InStr(strData, vbCrLf & vbCrLf))
httpGet = strData
End Function Private Sub ParseURL()
If LCase(Left(strURL, 7)) = "http://" Then
If InStr(8, strURL, "/") = 0 Then
strServer = Right(strURL, Len(strURL) - 7)
strURI = "/"
Else
strServer = Mid(strURL, 8, InStr(8, strURL, "/") - 8)
strURI = Right(strURL, Len(strURL) - InStr(8, strURL, "/") + 1)
End If
If InStr(strServer, ":") <> 0 Then
nPort = CLng(Right(strServer, Len(strServer) - InStr(strServer,":")))
strServer = Left(strServer, InStr(strServer, ":") - 1)
End If
If nPort = 0 Then nPort = 80
Else
Err.Raise vbObjectError, "Error", "错误的URL"
End If
End Sub Private Sub Connect()
Dim dtStart As Date
dtStart = Now()
objWinSock.RemoteHost = strServer
objWinSock.RemotePort = nPort
objWinSock.Connect
Do Until bConnected
DoEvents
If DateDiff("s", dtStart, Now) > 30 Then
Err.Raise vbObjectError, "Error", "连接超时"
End If
Loop
End Sub Private Sub SendRequest()
Dim strCmd
Dim dtStart As Date
dtStart = Now()
strCmd = "GET " & strURI & " HTTP/1.0" & vbCrLf
strCmd = strCmd & "User-Agent: aspHttp.http" & vbCrLf
strCmd = strCmd & "Accept: */*" & vbCrLf
strCmd = strCmd & vbCrLf
objWinSock.SendData strCmd
Do Until objWinSock.State = sckClosing
DoEvents
If DateDiff("s", dtStart, Now) > 60 Then
Err.Raise vbObjectError, "Error", "请求超时"
End If
Loop
End Sub Public Property Get Head() As Variant
Head = strHead
End Property Public Property Get Body() As Variant
Body = strData
End Property Private Sub objWinSock_DataArrival(ByVal bytesTotal As Long)
Dim strTemp
objWinSock.GetData strTemp, vbString
strData = strData & strTemp
End Sub Private Sub objWinSock_Connect()
bConnected = True
End Sub Private Sub objWinSock_Error(ByVal Number As Integer, Description As String, _
ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, _
ByVal HelpContext As Long, CancelDisplay As Boolean) Err.Raise vbObjectError, "Error", "Winsock Error: " & Number &
vbCrLf & Description
CancelDisplay = True
End Sub
编译该组件,然后按照下面的步骤注册该组件
C:\net stop iisadmin /y
C:\mtxstop
编译成Active Dll
C:\net start w3svc
在ASP中调用这个组件 <%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Dim obj
Set obj = Server.CreateObject("aspHttp.http")
Response.Write obj.httpGet("http://www.chinaasp.com.cn")
%>
</BODY>
</HTML>
Connect事件中处理连接成功后的事情。
Dim url1 As String
Dim url2 As String
url1 = "http://www.csdn.net/index.htm"
url2 = "c:\temp\index.htm"
cpfile url1, url2
End SubPublic Sub kkk(fpath_s As String, fpath_u As String)
Inet1.AccessType = icUseDefault
Dim b() As Byte
b() = Inet1.OpenURL(fpath_s, icByteArray)
Open fpath_u For Binary Access Write As #1
Put #1, , b()
Close #1
MsgBox "Done"
End Sub但是我编译成dll文件(先去掉 form_load事件,加上一个类,再把工程类型转换成active dll)在asp中调用却不成功。 <%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Dim obj
'on error resume next
Set obj= Server.CreateObject("http.conn")
dim url1
dim url2
url1="http://www.csdn.net/index.html"
url2="c:\imdas\index.htm"
strDown.kkk url1,url2
set strDown=nothing
%>
</BODY>
</HTML>出错如下:Type mismatch: 'kkk'
kkk是我在类中定义的方法。
头大了,也搞不出所以然来。
看看微软专家给你的回答。