Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 17:55

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[AutoIt] TCP Tutorial

Discussion on [AutoIt] TCP Tutorial within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
[AutoIt] TCP Tutorial

Hi Leute!

Da ich TCP selber für ein interessantes Thema halte, hab ich mal ein Tutorial darüber geschrieben. Have Fun!

Inhalt:
[-] Voraussetzungen
[-] Was ist TCP?
[-] Client erstellen
[-] Server erstellen

-----------------------------

[-] Voraussetzungen
Ihr solltet die Grundkrentnisse wie Schleifen, If-Abfragen, Variablen und ähnlichem draufhaben. Mehr braucht ihr eigentlich nicht ^^

-----------------------------

[-] Was ist TCP?

Ich versuche das ganze mal einfach zu halten und die Fachbegriffe wegzulassen

Jeder PC hat im Internet eine einzigartige Adresse, welche sich nur ändert, wenn man z.B. seinen Router neustartet. Diese Adresse wird IP-Adresse genannt. TCP ist ein Protokoll zur Übertragung von Daten über das Internet. Wenn sich ein Client mit dem Server verbinden möchte, sendet der Client ein Authentifizierungspaket an die IP des Servers. Wenn der Server auf die Verbindung eingehen möchte, antwortet er mit einem weiterem Paket an die IP des Clients. Sobald das abgeschlossen ist, besteht eine Verbindung zwischen eurem Computer (dem Client) und dem dem Server. Diese Verbindung nennt man Socket. Über diesen Socket können der Client und der Server nun Daten austauschen.

Beispiel:
Ihr wollt elitepvpers.com aufrufen, also sendet euer Browser (in dem Fall der Client) an elitepvpers.com (der Server) ein Paket, dass er eine Verbindung herstellen möchte. Nun antwortet der Server mit einem Paket und der Socket (die Verbindung zwischen beiden) wird erstellt. Nun sendet euch der Server den Inhalt der aufgerufenen Website.

Das Beispiel war jetzt stark vereinfacht, sollte euch aber trotzdem dabei helfen zu verstehen was TCP ist.

Falls ihr immer noch nicht verstanden habt was TCP ist, könnt ihr euch ja nochmal den Beitrag bei Wikipedia dazu ansehen: Link

-----------------------------

[-] Client erstellen

Zuerst werden wir den Client erstellen.

Der Client muss:
1. Einen Socket zu dem Server herstellen
2. Prüfen ob die Socket-ID gültig ist
3. Daten an den Server senden
4. Prüfen ob die Daten erfolgreich gesendet wurden

Also, let's start

Zuerst erstellen wir ein Autoit Script und nennen es z.B. "client.au3". Danach müssen wir TCP initialisieren. Das machen wir mit:
PHP Code:
TCPStartup() ; TCP wird initialisiert 
Nachdem das getan ist, versuchen wir eine Verbindung zu unserem Server herzustellen (was natürlich momentan scheitern würde, da wir den Server noch nicht erstellt haben). Der Befehl dafür lautet: TCPConnect(IpAdresse, Port)
Fügen wir das in unser Script ein, sieht das ganze so aus:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$socket 
TCPConnect("127.0.0.1"4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socketab 
TCPConnect gibt bei Erfolg einen Socket und bei einem Fehlversuch -1 zurück. Die Socket-ID speichern wir in der Variable "$socket" ab, da wir den Socket ja später auch noch verwenden möchten.

Als nächstes testen wir, ob unser Socket erfolgreich hergestellt wurde:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$socket 
TCPConnect("127.0.0.1"4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socketab

If $socket = -1 Then Wenn $socket = -1 istFehlermeldung ausgeben
    MsgBox
(16"Error""Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf 
Die If-Abfrage stellt sicher, dass unser Socket erfolgreich hergestellt wurde (Wir erinnern uns: Wenn TCPConnect(...) -1 zurückgibt, ist etwas schief gelaufen).

Der nächste Schritt wäre jetzt Daten (in unserem Fall ein wenig Text) zum Server (welchen wir ja später noch erstellen werden) zu senden. Der Befehl zum senden von Paketen lautet in AutoIT: TCPSend(socketID, datenDieGesendetWerdenSollen)
Bauen wir das wieder in unser Client Skript ein, sieht das ganz so aus:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$socket 
TCPConnect("127.0.0.1"4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socketab

If $socket = -1 Then Wenn $socket = -1 istFehlermeldung ausgeben
    MsgBox
(16"Error""Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf

$sendedBytes TCPSend($socket"Hi. Dieser Text wurde vom Client gesendet :)") ; Sendet den Text an unseren verbundenen Socket 
Wenn alles glatt läuft, gibt TCPSend(...) die Anzahl der gesendeten Bytes zurück, wenn nicht wird 0 zurückgegeben.

Um ganz sicher zu gehen, dass unser Paket auch ankommt, prüfen wir den Rückgabewert von TCPSend(...) nochmal:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$socket 
TCPConnect("127.0.0.1"4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socketab

If $socket = -1 Then Wenn $socket = -1 istFehlermeldung ausgeben
    MsgBox
(16"Error""Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf

$sendedBytes TCPSend($socket"Hi. Dieser Text wurde vom Client gesendet :)") ; Sendet den Text an unseren verbundenen Socket

If $sendedBytes 0 Then Wenn der Rückgabewert von TCPSend(...) 0 istFehlermeldung ausgeben
    MsgBox
(16"Error""Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf 
Als letztes schließen wir den Socket noch und fahren TCP herunter:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$socket 
TCPConnect("127.0.0.1"4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socketab

If $socket = -1 Then Wenn $socket = -1 istFehlermeldung ausgeben
    MsgBox
(16"Error""Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung
EndIf

$sendedBytes TCPSend($socket"Hi. Dieser Text wurde vom Client gesendet :)") ; Sendet den Text an unseren verbundenen Socket

If $sendedBytes 0 Then Wenn der Rückgabewert von TCPSend(...) 0 istFehlermeldung ausgeben
    MsgBox
(16"Error""Das Paket konnte nicht gesendet werden.") ; Fehlermeldung
EndIf

TCPCloseSocket($socket)
TCPShutdown() 
Unser Client ist jetzt fertig, also weiter zum Server

-----------------------------

[-] Server erstellen

Der Server muss:
1. Auf eine Verbindung mit einem Client warten
2. Wenn eine Verbindung ankommt, die gewünschten Daten an den Client senden

Let's go

Wir erstellen uns ein weiteres Script und nennen es z.B. "server.au3".

Der Server muss:
1. Auf eine eingehende Verbindung von einem Socket warten
2. Wenn eine Verbindung hergestellt wurde, die gesendeten Daten verarbeiten (in unserem Fall einfach in einer Message Box ausgeben)

Als erstes wird wieder TCP initialisiert:
PHP Code:
TCPStartup() ; TCP wird initialisiert 
Als nächstes müssen wir einen Mainsocket erstellen, mit den unser Server dann auf Verbindungen wartet. Das geschieht mit: TCPListen(ip, port)
In unser Script eingebaut sieht das ganze so aus:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$mainsocket 
TCPListen("127.0.0.1"4321) ; Den mainsocket erstellen 
Nun da der Mainsocket erstellt ist, warten wir auf eine Verbindung vom Client. Dafür benutzen wir eine Endlosschleife (While 1) und TCPAccept(mainsocket). Bei eingehender Verbindung gibt TCPAccept(...) eine Socket-ID zurück, ansonsten -1. Das bauen wir auch wieder ein:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$mainsocket 
TCPListen("127.0.0.1"4321) ; Den mainsocket erstellen

While Endlosschleife 
    $acceptedSocket 
TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
WEnd 
Jetzt überprüfen wir, ob eine Verbindung zu unserem Server hergestellt wurde und versuchen ein Paket vom Client zu empfangen. Das geschieht in AutoIt mit TCPRecv(verbundenerSocket, maximaleLängeInBytes)
Das ganze jetzt wieder in unser Server-Script eingebaut:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$mainsocket 
TCPListen("127.0.0.1"4321) ; Den mainsocket erstellen

While Endlosschleife 
    $acceptedSocket 
TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
    
    
If $acceptedSocket <> -1 Then Wenn $acceptedSocket ungleich -1 ist, ...
        
$receivedData TCPRecv($acceptedSocket1024) ; Wenn eine Socketverbindung hergestellt wurdeempfange ein Paket vom Client ($connectedSocket)
    EndIf
WEnd 
Wenn eine Verbindung akzeptiert wurde, versucht unser Script ein Paket vom Client zu empfangen und speichert es in $receivedData ab.

Als nächstes geben wir die empfangenen Daten einfach in einer Message Box aus:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$mainsocket 
TCPListen("127.0.0.1"4321) ; Den mainsocket erstellen

While Endlosschleife 
    $acceptedSocket 
TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
    
    
If $acceptedSocket <> -1 Then Wenn $acceptedSocket ungleich -1 ist, ...
        
$receivedData TCPRecv($acceptedSocket1024) ; Wenn eine Socketverbindung hergestellt wurdeempfange ein Paket vom Client ($connectedSocket)
        
MsgBox(64"Nachricht empfangen!""Es wurde eine Nachricht empfangen: " $receivedData)
    EndIf
WEnd 
Jetzt müssen wir nur noch den Socket schließen:
PHP Code:
TCPStartup() ; TCP wird initialisiert

$mainsocket 
TCPListen("127.0.0.1"4321) ; Den mainsocket erstellen

While Endlosschleife 
    $acceptedSocket 
TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen
    
    
If $acceptedSocket <> -1 Then Wenn $acceptedSocket ungleich -1 ist, ...
        
$receivedData TCPRecv($acceptedSocket1024) ; Wenn eine Socketverbindung hergestellt wurdeempfange ein Paket vom Client ($connectedSocket)
        
MsgBox(64"Nachricht empfangen!""Es wurde eine Nachricht empfangen: " $receivedData)
        
TCPCloseSocket($acceptedSocket)
    EndIf
WEnd 
Und fertig ist unser Server

Wenn ihr nun erst die "server.au3" und dann die "client.au3" startet, sollte diese Meldung ausgegeben werden:



Ich hoffe euch hat es geholfen, denn mich hat das ganze eine Menge Schreibarbeit gekostet :>

Falls ihr Fehler finden solltet, könnt ihr das gerne posten.

Lg,
Ende!
Attached Images
File Type: jpg tcp-msg.JPG (18.0 KB, 5154 views)
Ende! is offline  
Thanks
152 Users
Old 10/17/2009, 19:23   #2
 
elite*gold: 9
Join Date: Apr 2009
Posts: 4,815
Received Thanks: 568
sehr gutes tut gut gemacht
Lümmeltüte is offline  
Old 10/17/2009, 20:03   #3
 
elite*gold: 0
Join Date: Mar 2009
Posts: 17
Received Thanks: 21
tolles tut vorher konnte ich es noch nich jetzt schon =)
burningwat3r is offline  
Old 10/17/2009, 20:53   #4
 
SCORNI's Avatar
 
elite*gold: 0
Join Date: Jun 2009
Posts: 970
Received Thanks: 227
kann ich zwar schon aber für die arbeit gibt thx
SCORNI is offline  
Old 10/17/2009, 21:53   #5


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Dann hab ichs wenigsten nicht umsonst geschrieben
Ende! is offline  
Old 10/18/2009, 11:06   #6
 
Fresh^^'s Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 187
Received Thanks: 110
gutes tutorial...
Aber Frage:
Könntest du vill. noch n paar tipps geben für was man das verwenden kann oder überhaupt damit machn?
Fresh^^ is offline  
Old 10/18/2009, 12:16   #7
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by speidel View Post
gutes tutorial...
Aber Frage:
Könntest du vill. noch n paar tipps geben für was man das verwenden kann oder überhaupt damit machn?
Netzwerk verbindungen erstellen! Und darüber daten versenden.
Akorn is offline  
Old 10/18/2009, 12:19   #8


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by speidel View Post
gutes tutorial...
Aber Frage:
Könntest du vill. noch n paar tipps geben für was man das verwenden kann oder überhaupt damit machn?
Man könnte damit z.B. einen Chat oder ähnliche Sachen die mit Internet zu tun haben schreiben.
Ende! is offline  
Thanks
1 User
Old 10/18/2009, 16:52   #9
 
elite*gold: 9
The Black Market: 156/0/0
Join Date: Apr 2009
Posts: 10,163
Received Thanks: 3,804
Oder 'nen Updater in den Bot bauen?

Übrigens gutes Tut, gehört aber glaube mal in 'ne andere Section.

#Thanked
AllesVergeben is offline  
Old 10/18/2009, 17:00   #10


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by AllesVergeben View Post
Oder 'nen Updater in den Bot bauen?
Hmm ... dann brauchste aber einen Root-Server xD

Quote:
Originally Posted by AllesVergeben View Post
Übrigens gutes Tut, gehört aber glaube mal in 'ne andere Section.
Ja? In welche denn? In die Tut Section nicht wirklich, ist ja AutoIt related. Oder trotzdem in die Tut Section? xD
Ende! is offline  
Thanks
1 User
Old 10/18/2009, 17:05   #11
 
elite*gold: 9
The Black Market: 156/0/0
Join Date: Apr 2009
Posts: 10,163
Received Thanks: 3,804
würde ich sagen, bin mir aber nicht sicher.

Erklär mal das mit dem Root, wenn du willst, oder du kannst es auch gleich in den Tut einbauen wenn du Lust hast
AllesVergeben is offline  
Old 10/18/2009, 17:27   #12


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by AllesVergeben View Post
würde ich sagen, bin mir aber nicht sicher.
Verdammt, an die Section hab ich nicht gedacht Naja, ich werd mal nen Mod anschreiben ob er moven kann xD

Quote:
Originally Posted by AllesVergeben View Post
Erklär mal das mit dem Root, wenn du willst, oder du kannst es auch gleich in den Tut einbauen wenn du Lust hast
Du müsstest dir einen Server mieten und auf diesem ein Script laufen lassen, welches auf Anfragen von Bots wartet. Wenn ein Bot connected wird die aktuelle Versionsnummer ausgetauscht und wenn der Bot veraltert ist läd er halt über http die neue Version runter xD

Ich mach Update-Systeme aber immer anders ^^ Ohne Root-Server, vll schreib ich nachher mal ein Tut dazu
Ende! is offline  
Old 12/03/2009, 17:45   #13
 
elite*gold: 1
Join Date: Oct 2008
Posts: 1,078
Received Thanks: 276
nice TUT
bin vorher daran gescheitert, jetz klappts
Du solltest aber vllt den socket wieder schließen, sons schießt der Speicherverbrauch ins unermessliche :P
.nAno is offline  
Thanks
1 User
Old 12/08/2009, 23:34   #14


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by .nAno View Post
nice TUT
bin vorher daran gescheitert, jetz klappts
Du solltest aber vllt den socket wieder schließen, sons schießt der Speicherverbrauch ins unermessliche :P
Ty, done ^^
Ende! is offline  
Old 02/19/2010, 11:57   #15
 
elite*gold: 0
Join Date: Sep 2009
Posts: 445
Received Thanks: 286
dafür liebe ich dich!
das erste TUT das funktioniert!
THX
Banana.Crafts is offline  
Thanks
1 User
Reply

Tags
autoit, tcp, tutorial


Similar Threads Similar Threads
Autoit Tutorial
11/16/2010 - EO Exploits, Hacks, Tools & Macros - 4 Replies
Okay how to use autoit on EU demons. Okay to make a auto pill its very easy about four five lines.Okay so you always have to type While 1 Then you type Send and what you want it to type will be in the two ("{}"). So we have While 1 Send("{1}") then type how long it needs to sleep 1000+ So like Sleep(1000)
Autoit Tutorial
01/29/2008 - AutoIt - 4 Replies
Hallo Liebe Com ich hab hier in letzter zeit immer was von dem Prog AUTOIT gehört das Scripts ausführt. Da hätte ich ein paar fragen... I Ist Autoit Scripten Schwer? II Wie lange braucht man bis man Sagen kann Ja ok ich Kann Autoit scripten (mit ner norm.Lern geschwindigkeit)? III Was für Möglichkeiten Bieten Autoit Scripts? (Kann man nur z.b Tastatur Anschläge Programiern oder auch Mausklicks bzw z.b das scannen von Monstern in einem MMoG)? IV Kennt ihr Gute tuts wo man es Gut Erklärt...
AutoIt Tutorial
01/01/2008 - Dekaron - 2 Replies
Hey, smokedoo or someone out there who created bot and stuff like that, can you please post up a tutorial or vid on how to make at least the most simplest bot out there please. I know there are ppl like me that would just love to know. Thanks!



All times are GMT +2. The time now is 17:55.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.