Hi leute, ich hab mir heute erst die ganzen Posts gelesen, weil ich ja zum Teil inaktiv bin/war.
Und auf eure Anfragen im Thread "Auto IT TCP Chat" poste ich jetzt das Script hier.
Allerdings beim Testen auf meinem Windows 7 PC hat es ohne Probleme funktioniert,
nur auf meinem MacBook mit VirtualBox über Windows XP nicht, wahrscheinlich liegts an der VirtualBox dass er es immer wieder schließt.
Ist mir aber jetzt egal...
Was es schon kann:
- Auf TCP Reagieren und "antworten + ausführen"
Was es später dann noch dazu gecodet wird:
- UDP
- Alles was mir spontan noch dazu einfällt um das Netzwerk noch ausbaufähiger zu machen
Fest gelegte Ports:
TCP => 33150
UDP => 33151
Die fest eingetragene IP "192.168.1.33" ist nur deswegen da, weil ich bei meinem Modem alle IPs von meinem Netzwerk für das jeweilige Gerät immer reservieren tu, so dass jeder seine feste IP hat.
Es braucht halt alles so seine Zeit...
Hier der Server:
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=server.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; Multi Server
; Coded by Fabi
; AutoIt v3.3.6.1
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiEdit.au3>
$firststart = IniRead(@ScriptDir & "\server.ini","Server","Firststart","0")
If $firststart = 0 Then
IniWrite(@ScriptDir & "\server.ini","Server","Firststart","1")
IniWrite(@ScriptDir & "\server.ini","Socket","IP","server")
ElseIf $firststart = 1 Then
$read = IniRead(@ScriptDir & "\server.ini","Socket","IP","server")
EndIf
Const $LocalhostIP = "127.0.0.1"
Const $ServerIP = "192.168.1.33"
Const $ServerTCPPort = "33150"
;Const $ServerUDPPort = "33151" ====> UDP noch außer betrieb!
; GUI DESIGN CODING
$server = GUICreate("Multi Server",500,300)
$menuserver = GUICtrlCreateMenu("Server")
$config = GUICtrlCreateMenuItem("Server konfiguration",$menuserver)
$beenden = GUICtrlCreateMenuItem("Server beenden",$menuserver)
$log = GUICtrlCreateEdit("",0,0,500,280,$ES_READONLY)
GUICtrlSetBkColor($log,0xFFFFFF)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
If $read = "server" Then
; Erstellt einen lauschenden "TCP SOCKET"
$TCPSocket = TCPListen($ServerIP, $ServerTCPPort)
If $TCPSocket = -1 Then Exit
GUICtrlSetData($log,"Multi Server erfolgreich mit TCP gestartet... ("&$ServerIP&" : "&$ServerTCPPort&")")
ElseIf $read = "localhost" Then
; Erstellt einen lauschenden "TCP SOCKET"
$TCPSocket = TCPListen($LocalhostIP, $ServerTCPPort)
If $TCPSocket = -1 Then Exit
GUICtrlSetData($log,"Multi Server erfolgreich mit TCP gestartet... ("&$LocalhostIP&" : "&$ServerTCPPort&")")
EndIf
While 1
[/autoit] [autoit][/autoit] [autoit]; Verbindung ermöglichen
[/autoit] [autoit][/autoit] [autoit]$ConnectedTCPSocket = TCPAccept( $TCPSocket)
TCPSend($ConnectedTCPSocket,"ok")
If $ConnectedTCPSocket >= 0 Then
$entwerten = TCPRecv($ConnectedTCPSocket,512)
[/autoit] [autoit][/autoit] [autoit]If $entwerten = "test" Then
$readlog = GUICtrlRead($log)
GUICtrlSetData($log,"["&@HOUR&":"&@MIN&":"&@SEC&"] "&"Daten: "& $entwerten & @CRLF & $readlog)
ElseIf $entwerten = "firefox" Then
$readlog = GUICtrlRead($log)
GUICtrlSetData($log,"["&@HOUR&":"&@MIN&":"&@SEC&"] "&"Daten: "& $entwerten & @CRLF & $readlog)
ShellExecute("firefox.exe")
;ElseIf $entwerten = "" Then ; Weitere befehle...
[/autoit] [autoit][/autoit] [autoit]EndIf
EndIf
; GUI FUNKTIONEN
Switch GUIGetMsg()
Case $config
MsgBox(0,"Multi Server","Configbox")
Case $beenden
_Shutdown()
Case $GUI_EVENT_CLOSE
_Shutdown()
EndSwitch
WEnd
Func _Shutdown()
TCPCloseSocket($ConnectedTCPSocket)
TCPCloseSocket($TCPSocket)
TCPShutdown()
Exit
EndFunc
Hier der Client:
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=client.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; Client für Multi Server (TCP)
; Coded by Fabi
; AutoIt v3.3.6.1
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiStatusBar.au3>
Dim $VerbindeTCP = -1
[/autoit] [autoit][/autoit] [autoit]Const $MultiServerIP = "192.168.1.33"
Const $MultiServerPortTCP = "33150"
Local $send
;Const $MultiServerPortUDP = "33151" ====> UDP noch außer betrieb!
; GUI CODING DESIGN
$clientgui = GUICreate("Multi Client",600,400)
$clientmenu = GUICtrlCreateMenu("Client")
$config = GUICtrlCreateMenuItem("Client konfiguration",$clientmenu)
$beenden = GUICtrlCreateMenuItem("Beenden",$clientmenu)
$clientlog = GUICtrlCreateEdit("",0,0,600,330,$ES_READONLY)
GUICtrlSetBkColor($clientlog,0xFFFFFF)
$befehl = GUICtrlCreateInput("",0,332,520,25)
$schicken = GUICtrlCreateButton("Senden",525,332,75,25)
$leiste = _GUICtrlStatusBar_Create($clientgui)
[/autoit] [autoit][/autoit] [autoit]TCPStartup()
_GUICtrlStatusBar_SetText($leiste,"TCP gestartet...",0,0)
GUISetState(@SW_SHOW)
While 1
connection()
Switch GUIGetMsg()
Case $schicken
$send = GUICtrlRead($befehl)
TCPSend($VerbindeTCP,$send)
_GUICtrlStatusBar_SetText($leiste,"Der Text: "&$send&" wird gesendet...",0,0)
Case $clientmenu
MsgBox(0,"","Client konfiguration")
_GUICtrlStatusBar_SetText($leiste,"Der Client wird konfiguriert...",0,0)
Case $beenden
TCPShutdown()
Exit
Case $GUI_EVENT_CLOSE
TCPShutdown()
Exit
EndSwitch
WEnd
Func connection()
$VerbindeTCP = TCPConnect($MultiServerIP,$MultiServerPortTCP)
_GUICtrlStatusBar_SetText($leiste,"TCP Verbindung wird aufgebaut...",0,0)
If TCPRecv($VerbindeTCP,2) = "ok" Then
_GUICtrlStatusBar_SetText($leiste,"TCP Verbindung hergestellt!",0,0)
ElseIf @error Then
_GUICtrlStatusBar_SetText($leiste,"Die TCP Verbindung schlug fehl, weil: "&@error,0,0)
EndIf
EndFunc
Ich wünsch euch viel Spaß damit^^
Anregungen und Wünsche jederzeit Willkommen
PS: Hab eigentlich noch nie mit TCP oder UDP gearbeitet, aber ich lerne es erst dadurch
MfG
Fabi