Winsock不建立Connected能實現什么呢???!!!

解决方案 »

  1.   

    问题就是怎样建立connected.比如我点击命令按钮command1的时候:
    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等了很久都没有回音。
      

  2.   

    不要用WinSock控件
    用Internet Transfer控件
      

  3.   

    HTTP的協定﹐Client以Port 80連接HTTP Server
    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
      

  4.   

    不過妳只是下載網頁資料﹐就不要用winsock了﹐相樓上說的用Internet Transfer控件較方便
      

  5.   

    不是只下载网页,有些exe文件也要下载,
      

  6.   

    好像有人实现过
    “生成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>
      

  7.   

    HTTP报务器默认端口是80,也就是说对方已经在80端口listen了.
      

  8.   

    不能在调用Connect方法后立即检查state属性,因为建立连接需要时间。应该在
    Connect事件中处理连接成功后的事情。
      

  9.   

    使用microsoft internet transfer control 控件可以在exe标准工程中实现下载指定网页(别的文件类型也可以)。代码如下:Private Sub form_load()
    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是我在类中定义的方法。
    头大了,也搞不出所以然来。
      

  10.   

    http://www.csdn.net/expert/topic/624/624672.xml?temp=.6123468
    看看微软专家给你的回答。
      

  11.   

    需要时间响应返回信息,WEB服务是监听在80断口上的,可以连接!