Hallo Autoit Community!
Hier möchte ich mal ein von mir rohes Projekt vorstellen, mit welchem ich versuchen möchte die Netzwerk-Kommunikation in Autoit Programmen vereinfachen.
Genannt habe ich das ganze einfach mal EasyTcp (Hauptsächlich um mit meinem gewaltigen Einfallsreichtum zu stolzieren )... Die UDF ist noch sehr wirr und der Funktionsumfang könnte auch noch erweitert werden. Falls ihr Ideen habt oder die UDF gut findet kann ich ja nochmal alles überarbeiten...
Die 2 genannten Funktionen sind:
[autoit]Func _EasyTcpRecv($mainsocket, $prefix)
Func _EasyTcpSend($mainsocket, $name, $x_param0 [, $x_param0 = Default])
mit Hilfe dieser UDF kann man Daten über einen stink normalen TCP Socket versenden und empfangen.
Das besondere daran ist die Art des Transports der Daten, ich möchte versuchen das ganze an einem einfachen Server-Client Beispiel zu demonstrieren...
Server:
Spoiler anzeigen
#include "EasyTcp.au3"
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
[/autoit] [autoit][/autoit] [autoit]Global $iListener = TCPListen("", 8000)
Global $iSocket = -1
Do
$iSocket = TCPAccept($iListener)
Until $iSocket <> -1
While True
_EasyTcpRecv($iSocket, "_Aktion_")
Sleep(100)
WEnd
Func _Aktion_Nachricht($packet)
MsgBox(0, "_Aktion_Nachricht", "Nachricht vom Client: " & _EasyTcpGetData($packet, 1000))
Sleep(1000)
TCPCloseSocket($iSocket)
Exit TCPShutdown()
EndFunc
Client:
Spoiler anzeigen
#include "EasyTcp.au3"
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
[/autoit] [autoit][/autoit] [autoit]Global $iSocket = -1
[/autoit] [autoit][/autoit] [autoit]Do
$iSocket = TCPConnect("127.0.0.1", 8000)
Until $iSocket <> -1
_EasyTcpSend($iSocket, "Nachricht", 1000, "Hallo und tschuess.")
[/autoit] [autoit][/autoit] [autoit]Sleep(1000)
TCPCloseSocket($iSocket)
Exit TCPShutdown()
Was hier passiert:
Nachdem die Verbindung zwischen Server und Client steht, sendet der Client eine Nachricht über EasyTcp zum Server. Diese Nachticht enthält folgende Informationen:
-Name der Nachricht => "Nachricht"
-Packetdaten (Diese Daten werden über eine Nummer identifiziert) => Datenfeld1000 enthält: "Hallo und tschuess."
Der Server empfängt dieses Datenpacket, wertet es aus und macht mit den Daten folgendes:
-Er ruft die Funktion auf, welche sich aus dem Prefix (Übergeben in der _EasyTcpRecv()-Funktion) und dem Namen der Nachricht zusammensetzt. In diesem Fall: "_Aktion_" & "Nachricht"
-Dieser Funktion wird das empfangene Packet übermittelt.
-Mit der Funktion _EasyTcpGetData() wird dem Packet das Datenfeld1000 ausgelesen und der Inhalt wird per MsgBox() dargestellt.
Gleiches Verhalten funktioniert auch umgekehrt! (Client->Server und Server->Client)
Wie man das ganze umsetzt kann ich bei genügend Nachfrage auch per Video Tutorial posten.
Eine Ausführliche Dokumentation kann ich bei Nachfrage auch erstellen, allerdings schien mir das jetzt noch ein bisschen voreilig. (Vielleicht kanns ja niemand gebrauchen :D)
Mit freundlichen Grüßen,
Absolem