|
You last visited: Today at 08:57
Advertisement
[AutoIt] TCP Tutorial
Discussion on [AutoIt] TCP Tutorial within the Coding Tutorials forum part of the General Coding category.
06/07/2011, 21:45
|
#31
|
elite*gold: 60
Join Date: Apr 2008
Posts: 99
Received Thanks: 10
|
*** ist ein relativ altes TuT aber ändert ja nix am Inhalt^^
b2t ist das Tut richtig nice. Hab da vllt nen kleinen Makel gefunden. Sollte bei den Fehlermeldungen im Client nicht ein Exit hin da sonst der Code ja tdm weiter abgearbeitet wird obwohl ein Fehler auftrat?
Ach und kannst du mir vllt genauer erklären was es mit IP und Port auf sich hat? Sagen wir ich habe ne AutoIt GUI mit nem Textfeld. Dort gebe ich i-einen Text ein und der soll dann in nem Thread hier gepostet werden. Wie komme ich an die IP und an den Port den ich brauche?
|
|
|
06/07/2011, 22:25
|
#32
|
elite*gold: 1
Join Date: Feb 2009
Posts: 6,378
Received Thanks: 7,996
|
Quote:
Originally Posted by animeprince
Jap ist ein relativ altes TuT aber ändert ja nix am Inhalt^^
b2t ist das Tut richtig nice. Hab da vllt nen kleinen Makel gefunden. Sollte bei den Fehlermeldungen im Client nicht ein Exit hin da sonst der Code ja tdm weiter abgearbeitet wird obwohl ein Fehler auftrat?
|
Ja, eigentlich schon. Ich bin jetzt aber offen gesagt zu lazy das Ganze zu editen  Hab seit über 'nem Jahr eigentlich nichts mehr mit Au3 am Hut. Dennoch danke für den Hinweis.
Quote:
Originally Posted by animeprince
Ach und kannst du mir vllt genauer erklären was es mit IP und Port auf sich hat? Sagen wir ich habe ne AutoIt GUI mit nem Textfeld. Dort gebe ich i-einen Text ein und der soll dann in nem Thread hier gepostet werden. Wie komme ich an die IP und an den Port den ich brauche?
|
Die IP könntest du z.B. bekommen, indem du in der cmd den Befehl "ping elitepvpers.com" eingibst. Nur wird das bei e*pvp nicht klappen, da der DDoS Filter den Ping nicht durchlassen wird ;p Aber du kannst einfach einfach die IP per DNS-Auflösung zur Laufzeit holen. Schau dir mal die Funktion TCPNameToIp an (so hieß sie, wenn ich das recht in Erinnerung habe). HTTP Standard-Port ist 80.
|
|
|
06/08/2011, 11:43
|
#33
|
elite*gold: 60
Join Date: Apr 2008
Posts: 99
Received Thanks: 10
|
Quote:
Originally Posted by Ende!
Ja, eigentlich schon. Ich bin jetzt aber offen gesagt zu lazy das Ganze zu editen  Hab seit über 'nem Jahr eigentlich nichts mehr mit Au3 am Hut. Dennoch danke für den Hinweis.
|
Faule Socke =D
Was machste denn stattdessen? Ich bin immer offen für neues^^
Quote:
Originally Posted by Ende!
Aber du kannst einfach einfach die IP per DNS-Auflösung zur Laufzeit holen.
|
Hmm~ Das musst du mir mal näher erläutern^^'
€DIT:
Also ich möcht in AutoIt ein Programm zum SMS versenden schreiben (naja eig. so ne Art SMS Bomber aber ma sehen xD). Dazu werde ich eine GUI erstellen mit einem Eingabefeld für die Handynummer und wieviele SMS verschickt werden sollen. Außerdem ein Drop Down Menü zum Auswählen des Landes (da man das bei dem Anbieter den ich gewählt habe auswählen muss). Das erstmal zum groben was nichts mit dem Thema zu tun hat. Nun aber zum TCP. Undzwar will ich im Hintergrund die Daten an den Anbieter (Server) senden, also die Handynummer und das Land und dann versenden. Problematisch wird die Eingabe des Captchas (ne Idee wie ich das hinbekomme?)... Das dann halt so oft wie eingestellt wurde (am besten über Proxy)...
Hört sich kompliziert an aber vllt kannste ja helfen =D
|
|
|
06/08/2011, 14:29
|
#34
|
elite*gold: 1
Join Date: Feb 2009
Posts: 6,378
Received Thanks: 7,996
|
Quote:
Originally Posted by animeprince
Faule Socke =D
Was machste denn stattdessen? Ich bin immer offen für neues^^
|
C++
Quote:
Originally Posted by animeprince
Hmm~ Das musst du mir mal näher erläutern^^'
|
Code:
$ip = TCPNameToIp("elitepvpers.com")
|
|
|
06/08/2011, 21:30
|
#35
|
elite*gold: 60
Join Date: Apr 2008
Posts: 99
Received Thanks: 10
|
Ahh ja C++ hab ich einmal mit angefangen aber i-wie... kP ich glaub da war ich noch zu neu für xDD AutoIt Begriffe sind ja einfach nur easymode^^
Ahh auch wenn das weniger erläutert war meine ichs verstanden zu haben xP
Haste mein Edit oben absichtlich übersehen? xD
|
|
|
06/13/2011, 15:24
|
#36
|
elite*gold: 0
Join Date: Oct 2009
Posts: 4,851
Received Thanks: 3,417
|
Alt aber genial. Aber wie kann ich über TCP Daten, bzw. Pakete senden? :O
Edit : In VB is es ja dieser Befehl :
Quote:
Imports System.Net
Imports System.Net.Sockets
Dim sroSocket As Socket
//Connect to phConnector:
sroSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim IP As IPAddress = IPAddress.Parse("127.0.0.1")
Dim Port As Integer = 22580
Dim IPEP As IPEndPoint = New IPEndPoint(IP, Port)
sroSocket.Connect(IPEP)
//Sub to send a packet:
Sub SendPacket(ByVal OpCode As String, ByVal sData As String)
Using buffer As New IO.MemoryStream
Using w As New IO.BinaryWriter(buffer)
w.Write(CUShort(0))
w.Write(CUShort("&H" + OpCode))
w.Write(CUShort(1))
For i = 0 To sData.Length / 2 - 1
w.Write(CByte("&H" & sData.Substring(i * 2, 2)))
Next
w.BaseStream.Position = 0
w.Write(CUShort(w.BaseStream.Length - 6))
w.Flush()
sroSocket.Send(buffer.ToArray)
End Using
End Using
End Sub
//Call the SendPacket-Sub:
SendPacket("YourOpCode", "YourData")
|
|
|
|
06/13/2011, 18:14
|
#37
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Von einem Epvpers user (weiß aber nicht mehr von wem)
Zwar nie wirklich getestet, aber sollte gehen...
Client:
PHP Code:
;==== CLIENT ====;
Global $IP = IniRead(@ScriptDir & "\options.ini", "Connection", "IP", "127.0.0.1") ;IP wird aus der ini gelesen Global $Port = IniRead(@ScriptDir & "\options.ini", "Connection", "Port", "4949") ;Port wird aus der ini gelesen Global $MaxLen = IniRead(@ScriptDir & "\options.ini", "Connection", "MaxLen", "2048") ;Maximale Bitrate wird aus der ini gelesen
TCPStartup()
$Connect = MsgBox(0x21, "INFO", "Mit Server verbinden?") If $Connect = 2 Then TCPShutdown() Exit EndIf
MsgBox(0x40, "INFO", "Verbinde nun mit Server")
_connect()
Func _connect() $MainSocket = TCPConnect($IP, $Port) If $MainSocket = @error Then $Error = MsgBox(0x15,"ERROR","Konnte nicht mit Server verbinden."&@CR&"Bitte überprüfen Sie die Einstellungen."&@CR&"Noch einmal versuchen?") if $Error = 2 Then TCPCloseSocket($MainSocket) TCPShutdown() Exit ElseIf $Error = 4 TCPCloseSocket($MainSocket) _connect() EndIf EndIf Do $get = TCPRecv($MainSocket,$MaxLen) Until $get <> ""
Do $get_FileName = TCPRecv($MainSocket,$MaxLen) Until $get_FileName <> "" $FileName = BinaryToString(StringRight($get_FileName,Dec(StringLeft($get_FileName,10)))) Do $get_FileSize = TCPRecv($MainSocket,$MaxLen) Until $get_FileSize <> "" $FileSize = Dec(StringLeft($get_FileSize,10)) If $get = "0x" & StringToBinary("DATEI") Then $yes_no = MsgBox(0x44,"INFO","Der Server möchte eine Datei senden."&@CR&"Name : "&$FileName&@CR&"Größe : "&$FileSize&@CR&"Annehmen?") if $yes_no = 6 Then TCPSend($MainSocket,"0x"&Hex(2)&BinaryToString("OK")) $File = FileSaveDialog("Datei speichern als",@DesktopDir,"Alle (*.*)") $open = FileOpen($File,2) FileWrite($open,TCPRecv($MainSocket,$MaxLen)) FileClose($open) MsgBox(0x40,"INFO","Datei wurde empfangen") Run("explorer.exe /"&StringReplace($File,$FileName,"")) ElseIf $yes_no = 7 Then TCPSend($MainSocket,"0x"&Hex(2)&BinaryToString("NO") TCPCloseSocket($MainSocket) TCPShutdown() Exit EndIf EndIf EndFunc ;==>_connect
Server:
PHP Code:
;==== SERVER ====;
#include <INet.au3>
TCPStartup()
Global $IP = _GetIP() ; ermittelt über DynDNS die IP Global $PORT = 4949 Global $MaxLen = 2048 ;Maximale Speed die benutzt werden darf (ACHTUNG: BENUTZT BEI ZU VIEL DIE GANZE LEITUNG)
$MainSocket = TCPListen($IP, $PORT, 1)
MsgBox(64, "INFO", "Es gibt folgende DreiSchritte:" & @CR & "1.Datei Auswählen" & @CR & "2.Verbindung zum Cient herstellen" & @CR & "3.Datei senden")
$File = FileOpenDialog("Bitte wählen sie die Datei aus", @DesktopDir, "All (*.*)")
Do $NewSocket = TCPAccept($MainSocket) Until $NewSocket >= 0 TCPSend($NewSocket, "0x" & StringToBinary("DATEI")) TCPSend($NewSocket, "0x" & Hex(StringLen(FileGetLongName($File))) & StringToBinary(FileGetLongName($File))) TCPSend($NewSocket, "0x" & Hex(FileGetSize($File))) Do $get = TCPRecv($NewSocket, $MaxLen) Until $get <> ""
If $get = "0x"&Hex(2)&BinaryToString("OK") Then MsgBox(64,"INFO","Datei wurde von Gegenstelle angenommen") TCPSend($NewSocket,$File) MsgBox(64,"INFO","Die Datei wurde gesendet")
ElseIf $get = "0x"&Hex(2)&BinaryToString("NO") Then MsgBox(64,"INFO","Datei wurde von Gegenstelle angenommen") TCPCloseSocket($NewSocket) TCPCloseSocket($MainSocket) TCPShutdown() Exit EndIf
|
|
|
09/11/2011, 12:49
|
#38
|
elite*gold: 0
Join Date: Jun 2011
Posts: 125
Received Thanks: 47
|
Hab mal die script ein bissle überarbeitet und eine gui hinzugefügt:
Server:
PHP Code:
TCPStartup() ; TCP wird initialisiert
$mainsocket = TCPListen("0", 4321) ; Den mainsocket erstellen
While 1 ; Endlosschleife $acceptedSocket = TCPAccept($mainsocket) ; Wir versuchen eine möglicher Verbindung anzunehmen If $acceptedSocket <> -1 Then ; Wenn $acceptedSocket ungleich -1 ist, ... $receivedData = TCPRecv($acceptedSocket, 1024) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket) If Not $receivedData = "" Then MsgBox(64, "Nachricht empfangen", $receivedData) TCPCloseSocket($acceptedSocket) EndIf EndIf WEnd
Client:
PHP Code:
#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $_1 = GUICreate("Text to send", 518, 270, 192, 124) $text = GUICtrlCreateInput("Hi. Dieser Text wurde vom Client gesendet", 64, 16, 433, 21) $Button1 = GUICtrlCreateButton("Senden", 392, 208, 113, 49) $status = GUICtrlCreateLabel("Drücken sie Verbinden", 16, 200, 205, 20) $ip = GUICtrlCreateInput("", 64, 40, 433, 21) $Label1 = GUICtrlCreateLabel("Text:", 32, 16, 28, 17) $Label2 = GUICtrlCreateLabel("IP:", 40, 40, 17, 17) $Button2 = GUICtrlCreateButton("Verbinden", 256, 208, 113, 49) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 _Func1 () Case $Button2 _Func2 ()
EndSwitch $ipp = GUICtrlRead($ip) WEnd
Func _Func1 () ;Hier wird eine Funktion gestartet und zwar die funktion die oben dem Button1 zugewiesen wurde $textt = GUICtrlRead($text) $ipp = GUICtrlRead($ip)
TCPStartup() ; TCP wird initialisiert $socket = TCPConnect($ipp, 4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socket" ab
If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben MsgBox(16, "Error", "Die Verbindung zum Server konnte nicht hergestellt werden!") ; Fehlermeldung EndIf
$sendedBytes = TCPSend($socket,$textt) ; Sendet den Text an unseren verbundenen Socket
If $sendedBytes = 0 Then ; Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben MsgBox(16, "Error", "Das Paket konnte nicht gesendet werden.") ; Fehlermeldung EndIf
If Not $ipp = "" Then If Not $textt = "" Then MsgBox(64, $ipp, "'" & $textt & "'"&@CRLF& "" &@CRLF& "WURDE ABGESCHICKT") ; Fehlermeldung EndIf EndIf
TCPCloseSocket($socket) TCPShutdown() EndFunc
Func _Func2 () $ipp = GUICtrlRead($ip) TCPStartup() ; TCP wird initialisiert $socket = TCPConnect($ipp, 4321) ; Versucht eine Verbindung zum Server aufzubauen und speichert die SocketID in "$socket" ab If $socket = -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben $status = GUICtrlCreateLabel("Keine Verbindung zum server", 16, 200, 205, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFF0000) EndIf
If $socket > -1 Then ; Wenn $socket = -1 ist, Fehlermeldung ausgeben $ipp = GUICtrlRead($ip) $status = GUICtrlCreateLabel("Verbunden mit " & $ipp, 16, 200, 205, 20) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x00FF00)
EndIf TCPCloseSocket($socket) TCPShutdown() EndFunc
|
|
|
01/22/2012, 13:34
|
#39
|
elite*gold: 0
Join Date: Jun 2008
Posts: 51
Received Thanks: 4
|
richtig hammer geiles TUT!!!
Danke! Hast ein Thanks verdient.
Anhangs Tuts wären jetzt auch noch super...
also bis dahin, dass man mit AutoIt (TCP) "Hacken" (Boten) kann. Also wie man richtig decodiert und dann die entsprechenden Befehle an den richtigen Server (z.B. Metin2 Server) sendet.
|
|
|
01/22/2012, 14:21
|
#40
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Guck mal sieben Posts höher, da schreibt Ende! das er seit einem Jahr nichts mehr mit AutoIt zu tun hat und das ist beinahe sieben Monate her...
|
|
|
01/22/2012, 18:08
|
#41
|
elite*gold: 0
Join Date: Jun 2008
Posts: 51
Received Thanks: 4
|
ich meine ja nicht, dass er die nächsten Tuts erstellen muss :P Wäre aber toll, wenn JEMAND das machen würde, der Ahnung davon hat 
*schmoll*
|
|
|
01/22/2012, 18:22
|
#42
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Nur wenn du sie "Anhangs" Tutorials nennst, hängen sie ja an irgenwem oder irgendetwas. In dem Falle an diesem Tutorial
Außerdem gibt's das im Grunde schon, z.B:
 
Vielleicht findest du etwas verwertbares..
|
|
|
04/19/2012, 19:08
|
#43
|
elite*gold: 0
Join Date: Apr 2012
Posts: 1,214
Received Thanks: 153
|
Sehr gutes Tuturial, danke dafür! Habe vor ein paar Tagen mit AutoIT angefangen und bin begeistert, man kann mehr damit machen als ich anfangs erwartet hatte
Habe beim Durchgehen dieses Tuturials schon etwas mehr in server und client eingebaut, ein Eingabefeld in den Client um eine bestimmte Nachricht zu senden und in die server.au3, wenn diese Eingabe 'Exit' ist, dann wird der Server heruntergefahren
Nur eine Frage hätte ich, wie kann ich das ganze über verschiedene PC's machen? Also übers Internet sodass ein Chat daraus wird?
|
|
|
07/11/2012, 20:31
|
#44
|
elite*gold: 0
Join Date: Jul 2012
Posts: 1
Received Thanks: 0
|
THX
sehr hiflreich
|
|
|
03/06/2013, 10:06
|
#45
|
elite*gold: 558
Join Date: Jan 2010
Posts: 22,776
Received Thanks: 10,538
|
Für TCPStartup() wird keine Include-Datei benötigt?
|
|
|
 |
|
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 +1. The time now is 08:59.
|
|