我是这样做的
Private WithEvents MySock As MSWinsockLib.WinsockPrivate Sub Class_Initialize()
  Set MySock = New MSWinsockLib.Winsock
End SubSub Strat_Scok()
  MySock.RemoteHost = "127.0.0.1"
  MySock.RemotePort = 7005
  MySock.Bind 7009
  MySock.SendData "测试数据"
End Sub在asp页面调用Strat_Scok是总是出现错误提示“方法 '~' 作用于对象 '~' 失败 ”,经过分析主要是在执行 MySock.SendData "测试数据" 时出现,这是怎么回事呢?请指教!~

解决方案 »

  1.   

    你開 vb連續點2下就會出現這個問題,呵呵明天我去找段asp代碼給你看好了
      

  2.   

    to  daisy8675(莫依) 你找的代码在哪里?
      

  3.   

    Sub Strat_Scok()
      MySock.RemoteHost = "127.0.0.1"
      MySock.RemotePort = 7005
      MySock.Bind 7009
      Dim myData() As Byte
      Dim strData As String
      strData = "测试数据"
      ReDim myData(Len(strData))
      Dim i As Long
      For i = 1 To Len(strData)
        myData(i) = Val(Mid(strData, i, 1))
      Next
      
      MySock.SendData myData
    End Sub
      

  4.   

    Sends data to a remote computer.Return ValueVoidSyntaxobject.SendData dataThe SendData method syntax has these partsPart Description 
    object An object expression that evaluates to an object in the Applies To list. data Data to be sent. For binary data, byte array should be used. 
    ResWhen a UNICODE string is passed in, it is converted to an ANSI string before being sent out on the network.
      

  5.   

    to hxsam(hxsam)  错误依旧!
      

  6.   

    Winsock是个控件,怎么能和调用DLL一样呢,不可以的,没有界面的东东,在ASP中调用是不可以的,只有在界面中调一个控件才行。别混淆了。
      

  7.   

    将你的iis服务进程设置为可以和桌面交互看是否可以解决.
    通常情况下,使用窗口机制的ocx控件在服务进程上下文中是不可调用的,即使通过特殊配置能够调用,控件的书写也是有严格规范的.
      

  8.   

    ResWhen a UNICODE string is passed in, it is converted to an ANSI string before being sent out on the network.意思是:你发送Unicode包括中文,最好是编码以后在发送,比如用BASE64之类。
      

  9.   

    试试这个
    Sub Strat_Scok()
      MySock.Protocol=sckudpProtocol
      MySock.RemoteHost = "127.0.0.1"
      MySock.RemotePort = 7005
      'MySock.Bind 7009
      MySock.SendData "测试数据"
    End Sub
      

  10.   

    好像是IIS不允许ASP有这样的权限。
    有一个组件是专门让ASP用的。
    是一个socket.dll
    你可以到网上找一下,或发EMAIL给我。我发给你一份。
    用的时候很简单。
    set sck=createobject("socket.TCP")
    详细用法这里就不说了。如果需要你可以到网上找一下,或发EMAIL给我。我发给你一份。[email protected]
      

  11.   

    http://dev.csdn.net/Develop/article/26/26868.shtm
    这是我刚才找到的一个介绍的网址。
    另外我给你一下载的地方http://free.cctj.net/socket.dll
    原来的自动注册组件程序我找不到了。只省下这一个DLL文件了。可以手动注册。
    复制到c:\windows目录,或其它任务目录都可以。比如D:\
    然后“开始”-“运行”
    输入命令 regsvr32 c:\windows\socket.dll 或跟据你的实际情况改,比如 regsvr32 d:\socket.dll这样就注册好组件了。使用方法呢,刚才给你的那个网址上讲了一点,如果嫌不全,还可以到搜索引擎搜一下socket.tcp
    有很多的实例的。
    至于你的UPD协议,好像也支持,但是我没用过。你自己找找吧。
    如果找不到,再发邮件给我。我这儿有很多的以前的程序用这个的。
    我的MSN:[email protected]
    我的QQ就是上面那个号码。
      

  12.   

    下面的是我以前写的一个websocket组件,以前是为了作webirc用的,当然也可以做webhttp了,你可以参考一下
    Private WithEvents Socket As MSWinsockLib.Winsock
    Attribute Socket.VB_VarHelpID = -1
    Private ConnectFlag As BooleanPrivate mvarHost As String
    Private mvarPort As Long
    Private mvarSocketState As String
    Private mvarSocketBuffer As String
    Private mvarSocketBufferSize As Long
    Private mvarSocketConnectTimeOut As Long
    Private mvarSocketBufferTimeOut As Long
    Private mvarSocketError As StringPublic Sub SendText(ByVal txtSend As String)
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
            Exit Sub
        End If
        If ConnectFlag = False Then
            mvarSocketError = "Socket not connect to the specify host"
            Exit Sub
        End If
        Socket.SendData txtSend & vbCrLf
    End SubPublic Function WaitForGetSocketBuffer() As String
        Dim OldTimer As Long
        
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
            Exit Function
        End If
        If ConnectFlag = False Then
            mvarSocketError = "Socket not connect to the specify host"
            Exit Function
        End If    OldTimer = Timer * 1000
        Do Until Timer * 1000 - OldTimer > mvarSocketBufferTimeOut
            DoEvents
        Loop
        WaitForGetSocketBuffer = mvarSocketBuffer
        mvarSocketBuffer = ""
    End FunctionPublic Function WaitForGetSocketBufferSize() As Long
        Dim OldTimer As Long
        
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
            Exit Function
        End If
        If ConnectFlag = False Then
            mvarSocketError = "Socket not connect to the specify host"
            Exit Function
        End If    OldTimer = Timer * 1000
        Do Until Timer * 1000 - OldTimer > mvarSocketBufferTimeOut
            DoEvents
        Loop
        WaitForGetSocketBufferSize = mvarSocketBufferSize
        mvarSocketBufferSize = 0
    End FunctionPublic Sub CloseSocket()
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
        Else
            Socket.Close
        End If
    End SubPublic Sub OpenSocket()
        Dim OldTimer As Long
        If mvarHost = "" Or mvarPort <= 0 Then
            mvarSocketError = "Not specify the remote host and port"
        End If
        If Socket.State <> sckClosed Then
            mvarSocketError = "Socket has opened"
        End If
        Socket.RemoteHost = mvarHost
        Socket.RemotePort = mvarPort
        Socket.Connect    OldTimer = Timer * 1000
        Do Until Timer * 1000 - OldTimer > mvarSocketConnectTimeOut
            DoEvents
        Loop
        If ConnectFlag = False Then
            mvarSocketError = "Socket TimeOut Expire"
        End If
    End SubPublic Property Get SocketError() As String
        SocketError = mvarSocketError
        mvarSocketError = ""
    End PropertyPublic Property Let SocketConnectTimeOut(ByVal vData As Long)
        If vData <= 0 Then
            mvarSocketError = "SocketConnectTimeOut can't less than 0"
            Exit Property
        End If    mvarSocketConnectTimeOut = vData
    End PropertyPublic Property Get SocketConnectTimeOut() As Long
        SocketConnectTimeOut = mvarSocketConnectTimeOut
    End PropertyPublic Property Let SocketBufferTimeOut(ByVal vData As Long)
        If vData <= 0 Then
            mvarSocketError = "SocketBufferTimeOut can't less than 0"
            Exit Property
        End If    mvarSocketBufferTimeOut = vData
    End PropertyPublic Property Get SocketBufferTimeOut() As Long
        SocketBufferTimeOut = mvarSocketBufferTimeOut
    End PropertyPublic Property Get SocketBuffer() As String
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
            Exit Property
        End If
        If ConnectFlag = False Then
            mvarSocketError = "Socket not connect to the specify host"
            Exit Property
        End If
        
        SocketBuffer = mvarSocketBuffer
    End PropertyPublic Property Get SocketBufferSize() As Long
        If Socket.State = sckClosed Or Socket.State = sckClosing Then
            mvarSocketError = "Socket not opened"
            Exit Property
        End If
        If ConnectFlag = False Then
            mvarSocketError = "Socket not connect to the specify host"
            Exit Property
        End If
        
        SocketBufferSize = mvarSocketBufferSize
    End PropertyPublic Property Get SocketState() As String
        SocketState = mvarSocketState
    End PropertyPublic Property Let Port(ByVal vData As Long)
        If vData <= 0 Then
            mvarSocketError = "Remote Port can't less than 0"
            Exit Property
        End If
        
        mvarPort = vData
    End PropertyPublic Property Get Port() As Long
        Port = mvarPort
    End PropertyPublic Property Let Host(ByVal vData As String)
        If vData = "" Then
            mvarSocketError = "Remote Host can't be NULL"
            Exit Property
        End If
        
        mvarHost = vData
    End PropertyPublic Property Get Host() As String
        Host = mvarHost
    End PropertyPrivate Sub Class_Initialize()
        On Error GoTo er
        Set Socket = New MSWinsockLib.Winsock
        ConnectFlag = False
        mvarSocketState = "Closed"
        mvarSocketError = ""
        Exit Sub
        
    er:
        mvarSocketError = Err.Description
    End SubPrivate Sub Class_Terminate()
        If Socket.State <> sckClosed Then Socket.Close
    End SubPrivate Sub Socket_Close()
        ConnectFlag = False
    End SubPrivate Sub Socket_Connect()
        ConnectFlag = True
    End SubPrivate Sub Socket_DataArrival(ByVal bytesTotal As Long)
        Dim tmp As String
        
        If bytesTotal > 0 Then
            Socket.GetData tmp
            mvarSocketBuffer = mvarSocketBuffer + tmp
            mvarSocketBufferSize = mvarSocketBufferSize + bytesTotal
        End If
    End SubPrivate Sub Socket_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)
        ConnectFlag = False
        If Socket.State <> sckClosed And Socket.State <> sckClosing Then Socket.Close
        mvarSocketError = "Socket Error: " & Description
    End Sub