|
Download ActiveSocket Network Communications Toolkit 4.1  (.exe file)
Download Manual  (.htm file)
Produkt specificering
Tilføjelse af netværks kommunikation til en applikation er aldrig simpel.
Det kræver special viden som ikke alle programmører er i bessiddelse af.
Igennem flere år, har VBScript, Visual Basic og Visual C++ udviklere anvendt det fleksible og kraftfulde
ActiveSocket Network Communication Toolkit fra ActiveXperts Software. Idag anvender, .NET udviklere også denne komponent.
Med ActiveSocket kan du kommunikere via TCP/IP.
ActiveSocket giver dig et "easy-to-use" scripting interface til TCP/IP kommunikation.
Ved at bruge ActiveSocket, kan du hurtig tilføje netværks features.
Brug ActiveSocket til at tilføje flg. IP protokoller i dine applikationer eller scripts:
- Icmp object
- Http/Https object
- FtpServer/FtpFile object
- DnsServer/DnsRecord object
- Ntp object
- Ssh object
- Rsh object
- SnmpManager object
- SnmpTrapManager object
- SnmpMibBrowser object
- Tcp object
- Udp object
- IPtoCountry object
- Wake-On-LAN object;
ActiveSocket er bygget oven på Microsoft Winsock modulerne;
I forhold til andre på markedet, bruger den Microsoft Winsock modulerne, den overskriver dem ikke!
Performance af modulet er i sær klasse pga. multi-threaded arkitektur.
ActiveSocket understøtter flg. Operativ Systemer:
- Windows 2008;
- Windows Vista;
- Windows 2003;
- Windows XP;
- Windows 2000.
ActiveSocket er en COM-Komponent, som kan anvendes i et Windows miljø som har support for Visual Basic- samt Java scripting.
ActiveSocket kan bruges af flg. udviklingssprog og scripting sprog:
- Visual Basic 5.x eller nyere- Windows based applications;
- Visual Basic .NET - Windows .NET based application;
- ASP 2.x - Web sites baseret på Active Server Pages (server-side scripting);
- ASP .NET - Web site baseret på Active Server Pages og .NET Framework;
- Visual C++ 5.x eller nyere- Windows based applications;
- Visual C# .NET - Windows .NET based applications;
- VBScript - Windows based scripts;
- HTML - Client scripts i HTML.
Arkitektur
Windows indeholder routiner for netværk og Internet kommunikation.
Disse routiner findes i DLLs som kaldes Winsock (for WINdows SOCKets).
ActiveSocket er bygget oven på Winsock. Den anvender Winsock modulerne, den overskriver dem ikke, og den installer heller ikke andre Winsock moduler.
Kernen af ActiveSocket består af en fil: ASocket.dll.
Dett er COM/OLE modulet,og giver flg. understøttelse:
Icmp object, Http object, RSh object, Ntp object,
Snmp object, SnmpTrapOut object, SnmpTrapIn object,
Wake-On-LAN (WOL) object and Socket object.
The ActiveSocket components
ActiveSocket pakken består af 3 komponenter:
- ActiveSocket COM component - interface til VB programmer;
- ActiveSocket Hjælpe filer - dokumentation;
- ActiveSocket sample filer- eksempler.
Installation på en single computer
Kør AComport.exe Setup programmet. InstallShield wizard vil guide dig gennem resten af installationen.
Hvis du vælger at benytte ActiveSocket COM komponenten, kan installations programmet lave registrering af COM komponenten for dig. Det vil også være muligt og lave en manuel registrering.
Installation på flere computere
Da installationen af Core komponenten er meget simpel, kan det være at du vil gøre dette manuelt, eller via dit eget distubutions software.
Hvis du vil registrere COM komponenten manuelt på andre maskiner, skal du gøre flg.:
- Kopier ACtivesok.dll (Activesocket COM komponenten) til de nye maskiner;
- Registrer COM komponenten ved at køre flg. kommando: REGSVR32 <dest-location>\file
Code Snippets
' Constants: Some Error codes
Const asERR_SUCCESS=0
Set icmpObj = CreateObject("ActiveXperts.Icmp")
Do
strHost = inputbox( "Enter host", "Input", "192.168.1.10" )
Loop until strHost <> ""
icmpObj.Ping strHost, 2000 ' Timeout 2000 ms
If( icmpObj.LastError = 0 ) Then
WScript.Echo "Duration:" & icmpObj.LastDuration & "ms"
Else
Script.Echo "Error " & icmpObj.LastError
End If
WScript.Echo "Ready."
|
|
|
Module IcmpDemo
Sub Main()
Dim objIcmp As ASOCKETLib.IcmpClass = New ASOCKETLib.Icmp()
Dim objConstants As Constants = New Constants()
Dim i As System.Int16
Dim strHost As String = "www.activexperts.com"
For i = 1 To 4
Console.WriteLine("Pinging " & strHost & " ...")
objIcmp.Ping(strHost, 2000)
If (objIcmp.LastError = objConstants.asERR_SUCCESS) Then
Console.WriteLine("Reply from " & strHost )
Console.WriteLine("Time="&objIcmp.LastDuration.ToString())
Else
Console.WriteLine("Error: "&objIcmp.LastError.ToString())
End If
System.Threading.Thread.Sleep(1000)
Next
Console.WriteLine("Ready.")
System.Threading.Thread.Sleep(5000)
End Sub
End Module
|
|
|
VBScript sample: Icmp Demo
|
|
Visual Basic .NET sample: Icmp Demo
|
Const asERR_SUCCESS=0
Set httpObj = CreateObject("ActiveXperts.Http")
Do
strUrl = inputbox( "Enter URL", "Input", "www.activexperts.com" )
Loop until strUrl <> ""
httpObj.Connect( strUrl )
If( httpObj.LastError <> asERR_SUCCESS ) Then
WScript.Echo "Error " & httpObj.LastError
Else
strData = httpObj.ReadData
If( httpObj.LastError <> asERR_SUCCESS ) Then
WScript.Echo "Error " & httpObj.LastError
Else
WScript.Echo strData
End If
httpObj.Disconnect
WScript.Echo "Disconnect."
End If
WScript.Echo "Ready."
|
|
|
HRESULT hr;
IHttp *pHttp;
BSTR bstrTemp
CoInitialize( NULL );
hr = CoCreateInstance( CLSID_Http, NULL, CLSCTX_INPROC_SERVER,
IID_IHttp, (void**) &pHttp);
pHttp->put_ProxyServer( _bstr_t( ( LPCSTR ) "proxy01" ) );
pHttp->Connect( _bstr_t( "www.activexperts.com/about" ) );
pHttp->get_LastError( &lLastError );
if( lLastError != 0L )
goto _End;
pHttp->ReadData( &bstrTemp );
pHttp->get_LastError( &lLastError );
if( lLastError != 0L )
goto _End;
printf( "%ls\n", bstrTemp );
SysFreeString( bstrTemp );
pHttp->Disconnect();
_End:
printf( "Ready." );
|
|
|
VBScript sample: Http Demo
|
|
Visual C# .NET sample: Http Demo
|
Public asObj As ASOCKETLib.Ntp
Private Sub BTN_RETRIEVETIME_Click()
asObj.GetTime (CB_TIMESERVERS.List(CB_TIMESERVERS.ListIndex))
If (asObj.LastError = 0) Then
TXT_RESULT = "SUCCESS"
TXT_DATETIME = asObj.Year & "/" & _
asObj.Month & "/" & _
asObj.Day & " " & _
asObj.Hour & ":" & _
asObj.Minute & ":" & _
asObj.Second
TXT_OFFSET = asObj.LocalOffsetSeconds
Else
TXT_RESULT = "ERROR #" & asObj.LastError
TXT_DATETIME = "n/a"
TXT_OFFSET = "n/a"
End If
End Sub
Private Sub Form_Load()
Set asObj = CreateObject("ActiveXperts.Ntp")
CB_TIMESERVERS.AddItem ("fartein.ifi.uio.no")
CB_TIMESERVERS.AddItem ("ntp0.coreng.com.au")
CB_TIMESERVERS.AddItem ("ntp1.rnp.br")
CB_TIMESERVERS.AddItem ("142.3.100.2")
CB_TIMESERVERS.ListIndex = 0
End Sub
|
|
|
int main(int argc, char* argv[])
{
INtp *pNtp = NULL;
HRESULT hr;
LONG lYear, lMonth, lDay, lHour, lMinute, lSecond;
LONG lLastError, lOffset;
CoInitialize(NULL); // Initialize COM
hr = CoCreateInstance( CLSID_Ntp, NULL, CLSCTX_INPROC_SERVER,
IID_INtp, (void**) &pNtp );
if( ! SUCCEEDED( hr ) ) {
goto _EndMain;
}
pNtp->GetTime( _bstr_t( "fartein.ifi.uio.no" ) );
pNtp->get_LastError( &lLastError );
if( lLastError != asERR_SUCCESS )
goto _EndMain;
pNtp->get_Year( &lYear );
pNtp->get_Month( &lMonth );
pNtp->get_Day( &lDay );
pNtp->get_Hour( &lHour );
pNtp->get_Minute( &lMinute );
pNtp->get_Second( &lSecond );
pNtp->get_LocalOffsetSeconds( &lOffset );
printf( "Date:%04d/%02d/%02d\n", lYear, lMonth, lDay );
printf( "Time:%02d:%02d:%02d\n", lHour, lMinute, lSecond );
printf( "Offset: %02d min and %02d sec\n", lOffset, lOffset%60 );
_EndMain:
if( pNtp != NULL ) {
pNtp->Release();
pNtp = NULL;
}
return 0;
}
|
|
|
Visual Basic 6 sample: Ntp Demo
|
|
Visual C++ 6 sample: Ntp Demo
|
Module RShDemo
Sub Main()
Dim objRSh As ASOCKETLib.RShClass = New ASOCKETLib.RSh()
Dim objConstants As Constants = New Constants()
objRSh.Clear()
objRSh.Host = "192.168.1.10"
objRSh.Command = "/bin/ls"
objRSh.ScriptTimeOut = 5000
Console.WriteLine("Running command...")
objRSh.Run()
Console.WriteLine(" Result:" & objRSh.LastError.ToString())
If (objRSh.LastError = objConstants.asERR_SUCCESS) Then
Console.WriteLine("StdErr:" & objRSh.StdErr)
Console.WriteLine("StdOut:" & objRSh.StdOut)
End If
Console.WriteLine("Ready.")
End Sub
End Module
|
|
|
using System; using ASOCKETLib; using ASOCKETConstants;
namespace RShDemo
{
class RShDemo
{
[STAThread] static void Main(string[] args)
{
RSh objRSh = new RShClass();
asConstants objConstants = new asConstants();
objRSh.Clear();
objRSh.Host = "192.168.1.10";
objRSh.Command = "/bin/ls";
objRSh.ScriptTimeOut = 5000;
Console.WriteLine( "Running command..." );
objRSh.Run();
Console.WriteLine( "Result:" + objRSh.LastError.ToString() );
if( objRSh.LastError == objConstants.asERR_SUCCESS )
{
Console.WriteLine( "StdErr:" + objRSh.StdErr );
Console.WriteLine( "StdOut:" + objRSh.StdOut );
}
Console.WriteLine( "Ready." );
}
}
}
|
|
|
Visual Basic .NET sample: RSH Demo
|
|
Visual C# .NET sample: RSH Demo
|
Const asERR_SUCCESS=0
Set objSnmp = CreateObject( "ActiveXperts.Snmp" )
Do
strHostName = inputbox( "Enter agent (host)", "Input" )
Loop until strHostName <> ""
objSnmp.Open strHostName, "public"
If( objSnmp.LastError <> 0 ) Then
WScript.Echo "Error " & objSnmp.LastError
Else
strOID = "system.sysName.0"
If( objSnmp.LastError = asERR_SUCCESS ) Then
Do
strValue = objSnmp.Get( strOID )
WScript.Echo strOID & " : "
WScript.Echo " Value:" & strValue & & vbCrLf
WScript.Echo " Type:" & objSnmp.GetType() & vbCrLf
strNextOID = objSnmp.GetNext( strOID )
strOID = strNextOID
Loop Until objSnmp.LastError <> 0
objSnmp.Close()
WScript.Echo "Closed."
End If
End If
|
|
|
Module SnmpDemo
Sub Main()
Dim objSnmp As ASOCKETLib.Snmp = New ASOCKETLib.Snmp()
Dim objConstants As Constants = New Constants()
Dim strAgent As String = "127.0.0.1"
Dim strCommunity As String = "public"
Dim strOID As String = "system.sysName.0"
Dim strNextOID As String
Dim strValue As String
objSnmp.Open(strAgent, strCommunity)
If (objSnmp.LastError = objConstants.asERR_SUCCESS) Then
Do
strValue = objSnmp.Get(strOID)
Console.WriteLine(strOID + " : ")
Console.WriteLine(" Value:" & strValue )
Console.WriteLine(" Type:" & objSnmp.GetType() )
strNextOID = objSnmp.GetNext(strOID)
strOID = strNextOID
Loop Until( objSnmp.LastError <> 0 )
End If
Console.WriteLine( "Ready." )
End Sub
End Module
|
|
|
VBScript: SNMP Walker Demo
|
|
Visual Basic .NET sample: SNMP Walker Demo
|
Module SendTrap
Sub Main()
Dim snmpTrapOut As ASOCKETLib.SnmpTrapOut
Dim objConst As Constants
Dim strAgent As String
Dim strCommunity As String
strAgent = "localhost"
strCommunity = "public"
snmpTrapOut = New ASOCKETLib.SnmpTrapOut()
objConst = New Constants()
snmpTrapOut.Initialize()
If (snmpTrapOut.LastError=objConst.asERR_SUCCESS) Then
snmpTrapOut.AddTrap(".1.3.6.1.2.1.1.5.0",
objConst.asASN_IPADDRESS,
"10.0.0.1")
snmpTrapOut.AddTrap(".1.3.6.1.2.1.1.5.1",
objConst.asASN_OCTETSTRING,
"One two three")
snmpTrapOut.Send(strAgent, strCommunity)
snmpTrapOut.Shutdown()
End If
End Sub
End Module
|
|
|
using System;
using ASOCKETLib;
using ASOCKETConstants;
namespace ReceiveTrap {
class ReceiveTrap {
[STAThread]
static void Main(string[] args) {
SnmpTrapIn snmpTrapIn = new SnmpTrapInClass();
asConstants objConst = new asConstants();
String strCommunity = "public";
System.Int32 i;
snmpTrapIn.Initialize();
if( snmpTrapIn.LastError == objConst.asERR_SUCCESS ) {
snmpTrapIn.StartListening( strCommunity );
if( snmpTrapIn.LastError == objConst.asERR_SUCCESS ) {
for( i = 0; i < 30; i++ ) {
snmpTrapIn.Sleep( 1000 );
snmpTrapIn.GetFirstTrap( -1 );
while( snmpTrapIn.LastError==objConst.asERR_SUCCESS ) {
Console.WriteLine( snmpTrapIn.CurrentOID + ": " );
Console.WriteLine( snmpTrapIn.CurrentValue );
snmpTrapIn.GetNextTrap( -1 );
}
}
snmpTrapIn.StopListening();
}
snmpTrapIn.Shutdown();
}
}
}
|
|
|
Visual Basic .NET: Send SNMP traps
|
|
Visual C# .NET: Receive SNMP traps
|
' Constants: Connection states
Const asCONN_DISCONNECTED=1
Const asCONN_LISTENING=2
Const asCONN_CONNECTED=3
' Constants: Error codes
Const asERR_SUCCESS=0
' Constants: Protocols
Const asPROTOCOL_RAW=1
Const asPROTOCOL_TELNET=2
' Create a socket instance
Set asObj = CreateObject("ActiveXperts.Socket")
asObj.Protocol = asPROTOCOL_RAW
' Make a connection to port 1500 on remote server
asObj.Connect "127.0.0.1", 1500
WScript.Echo "Connect: result = " & asObj.LastError
If asObj.LastError <> 0 Then
WScript.Echo "Error: " & asObj.LastError
Else
WScript.Echo "Connection established" & vbCrLf
' Send information to client
str = "This is just a message"
WScript.Echo "SendString: " & str
asObj.SendString str, False
str = "Quit"
WScript.Echo "SendString: " & str
asObj.SendString str, False
asObj.Sleep 3000
asObj.Disconnect ' And finally, disconnect
End If
|
|
|
' Constants: Connection states
Const asCONN_DISCONNECTED=1
Const asCONN_LISTENING=2
Const asCONN_CONNECTED=3
' Constants: Error codes
Const asERR_SUCCESS=0
' Constants: Protocols
Const asPROTOCOL_RAW=1
Const asPROTOCOL_TELNET=2
' Create a socket instance
Set asObj = CreateObject("ActiveXperts.Socket")
asObj.Protocol = asPROTOCOL_RAW
asObj.StartListening 1500 ' Listen for incomingb request
If asObj.LastError <> 0 Then
WScript.Echo "Error " & asObj.LastError
Else
' Wait for a connection on port 1500 on this machine now...
WScript.Echo "Waiting for a connection..."
Do while asObj.ConnectionState = asCONN_LISTENING
asObj.Sleep 1000
Loop
If asObj.ConnectionState = asCONN_CONNECTED Then
WScript.Echo "Connection established" & vbCrLf
str = ""
Do While asObj.ConnectionState = asCONN_CONNECTED and str <> "Quit"
If asObj.HasData Then
str = asObj.ReceiveString
WScript.Echo "ReceiveString: " & str
End If
asObj.Sleep 100
Loop
asObj.Disconnect ' And finally, disconnect
End If
End If
|
|
|
VBScript client/server sample: CLIENT.VBS
|
|
VBScript client/server sample: SERVER.VBS
|
' Constants: Connection states
Const asCONN_DISCONNECTED=1
Const asCONN_LISTENING=2
Const asCONN_CONNECTED=3
' Constants: Some Error codes
Const asERR_SUCCESS=0
Const asERR_INVALIDPARAMETER=1
Const asERR_CREATETHREADFAILED=2
Const asERR_EVALUATIONEXPIRED=3
Const asERR_INVALIDLICENSE=4
' Constants: Protocols
Const asPROTOCOL_RAW=1
Const asPROTOCOL_TELNET=2
' Create a socket instance
Set asObj = CreateObject("ActiveXperts.Socket")
asObj.Protocol = asPROTOCOL_TELNET
' Write some information to console
WScript.Echo "ActiveSocket " & asObj.Version & " demo."
WScript.Echo "Expiration date: " & asObj.ExpirationDate & vbCrLf
' Make a connection on port 80 to remote server
asObj.Connect "www.activexperts.com", 80
Wscript.Echo "Result: " & asObj.LastError
If asObj.LastError <> 0 Then
WScript.Echo "Error: " & asObj.LastError
Else
If asObj.ConnectionState = asCONN_CONNECTED Then
WScript.Echo "Connection established" & vbCrLf
strReceived = ""
nCounter = nCounter + 1
asObj.Sleep 1000
asObj.SendString "GET /activsocket/demopage/ HTTP/1.1", True
asObj.SendString "Host: www.activexperts.com" & vbCrlf, True
asObj.Sleep 1000
If asObj.HasData Then
strReceived = asObj.ReceiveString
WScript.Echo "RECV: " & strReceived
End If
asObj.Sleep 1000
asObj.Disconnect ' And finally, disconnect
End If
End If
|
|
|
Module Module1
Public m_objSocket As ASOCKETLib.SocketClass
Public m_objConstants As Constants
Private Sub ReadFromPort(ByVal TimeOut As System.Int32)
Dim StartTime As System.Int32
Dim strStringReceived As String
Dim bSomethingRead As System.Boolean
Dim lConnectionState As System.Int32
StartTime = Environment.TickCount()
Console.WriteLine("Attempting to receive data..." & vbCrLf)
Do
If(m_objSocket.ConnectionState <>
m_objConstants.asCONN_CONNECTED) Then
Exit Do
End If
System.Threading.Thread.Sleep(200)
strStringReceived = m_objSocket.ReceiveString()
If (strStringReceived <> "") Then
Console.WriteLine(strStringReceived & vbCrLf)
End If
Loop Until (Environment.TickCount() > StartTime + TimeOut)
End Sub
Sub Main()
Dim strHost As String = "library.uah.edu"
Dim strLogin As String = "guest"
Dim strPassword As String = "guest"
m_objSocket = New ASOCKETLib.Socket()
m_objConstants = New Constants()
m_objSocket.Protocol = m_objConstants.asPROTOCOL_TELNET
m_objSocket.Connect(strHost, 23)
If(m_objSocket.LastError=m_objConstants.asERR_SUCCESS)Then
System.Threading.Thread.Sleep(5000)
ReadFromPort(3000) ' Receive data for 3 seconds
Console.WriteLine("Send: '" & strLogin & "'" & vbCrLf)
m_objSocket.SendString(strLogin, True)
ReadFromPort(3000) ' Receive data for 3 seconds
Console.WriteLine("Send: '" & strPassword & "'" & vbCrLf)
m_objSocket.SendString(strPassword, True)
ReadFromPort(3000) ' Receive data for 3 seconds
m_objSocket.Disconnect()
Console.WriteLine("Disconnected by client." & vbCrLf)
End If
End Sub
End Module
|
|
|
VBScript sample: Telnet demo
|
|
Visual Basic .NET sample: Telnet demo
|
Set wObj = CreateObject("ActiveXperts.WOL")
wObj.WakeUp "00-10-4B-BA-7A-51"
WScript.Echo "WakeUp: result = " & wObj.LastError
|
|
|
Module WakeOnLanDemo
Sub Main()
Dim objWol As ASOCKETLib.WOLClass = New ASOCKETLib.WOL()
Dim objConstants As Constants = New Constants()
objWol.WakeUp("00-10-4B-BA-7A-51")
Console.WriteLine( "Result: " & objWol.LastError.ToString() )
End Sub
End Module
|
|
|
VBScript sample: Wake On LAN
|
|
Visual Basic .NET sample: Wake On LAN
|
|
|