我是这样做的
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 "测试数据" 时出现,这是怎么回事呢?请指教!~
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 "测试数据" 时出现,这是怎么回事呢?请指教!~
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
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.
通常情况下,使用窗口机制的ocx控件在服务进程上下文中是不可调用的,即使通过特殊配置能够调用,控件的书写也是有严格规范的.
Sub Strat_Scok()
MySock.Protocol=sckudpProtocol
MySock.RemoteHost = "127.0.0.1"
MySock.RemotePort = 7005
'MySock.Bind 7009
MySock.SendData "测试数据"
End Sub
有一个组件是专门让ASP用的。
是一个socket.dll
你可以到网上找一下,或发EMAIL给我。我发给你一份。
用的时候很简单。
set sck=createobject("socket.TCP")
详细用法这里就不说了。如果需要你可以到网上找一下,或发EMAIL给我。我发给你一份。[email protected]
这是我刚才找到的一个介绍的网址。
另外我给你一下载的地方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就是上面那个号码。
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