Hallo Autoit-com,
Ich bin gerade ganz frisch von den Ahk'lern(autohotkey) zu Autoit gewechselt.
Hab' mich natürlich gleich ans büffeln gemacht und einen kleinen chat entworfen:
#include <GUIConstantsEx.au3>
GUICreate("Chat", 1000, 1000)
GUISetBkColor(0x00000)
$mainedit = GUICtrlCreateEdit("Chat gestartet - Warte auf Verbindungsaufbau!", 50, 50, 750, 750)
$Sendbut = GUICtrlCreateButton("Send", 820, 820, 50, 50)
$savebut = GUICtrlCreateButton("save-chat", 820, 50, 100, 50)
$SendInputBox = GUICtrlCreateInput("", 50, 820, 750, 50)
GUISetState(@SW_SHOW)
Sleep(1000)
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "Your Ip is " & @IPAddress1 & "!")
Dim $Ip = InputBox("Set Your Partners IP!", "Please Enter your Partners IP!", "Enter IP here!")
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "Partner's IP is " & $IP & "!")
Sleep(1000)
Dim $Port = 1200
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "Port is " & $Port & "!")
TCPStartUp()
Sleep(500)
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "TCP is switched on!")
Sleep(200)
$Connect = MsgBox(4, "Connecten oder connecten lassen?", "Drücke Ja um dich selbst zu connecten und Nein um dich connecten zu lassen!")
If $connect = 6 Then
;-----------------------------------
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "TCP is connecting")
$Socket = TCPConnect($IP,$Port)
Dim $String, $msg, $empf, $Sended
If @error Then
MsgBox(0,"Error", "Verbindung Fehlgeschlagen! Überprüfe die Ip des Chatpeartners!")
MsgBox(0,"Error", "Error: " & @error & " .")
EndIf
;-----------------------------------
EndIf
If $connect = 7 Then
;------------------------------------------------
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "Tcp is waiting for incoming connections...")
$Mainsocket = TCPListen($Ip, $Port)
Dim $Socket = -1
Do
$Socket = TCPAccept($Mainsocket)
Until $Socket > -1 or $Socket < -1
Dim $msg, $recv, $Sended
;------------------------------------------------
EndIf
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "Connected!")
TrayTip("Verbunden", "Du bist verbunden mit " & $IP & "!", 4000)
Sleep(2000)
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "You can Chat now!")
SoundPlay(@WindowsDir & "\media\tada.wav",1)
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "_______________________________________________" & @CRLF)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $SendBut
$String = GUICtrlRead($Sendinputbox)
$Sended = TCPSend($Socket, $String)
EndSelect
$empf = TCPRecv( $Socket, 10000)
If $empf <> "" Then GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & $IP & " --> " & $empf)
If $Sended <> "" Then
GUICtrlSetData($mainedit, GUICtrlRead($mainedit) & @CRLF & "You" & " --> " & $String)
GUICtrlSetData($Sendinputbox, "")
$Sended = ""
EndIf
If @error Then ExitLoop
WEnd
TCPShutDown()
Alles anzeigen
Mein Problem:
Wenn man das Programm startet kann man es super testen indem man es zweimal öffnet und es über den IPv4-gateway laufen lässt.
1.starten
2.Eigende Ipv4 eingeben(Steht oben im Chatprotokoll).
3. Auf nien bei connectenlassen klicken.
4.wenn dort "waiting for incoming connection" steht das Programm nochmal öffen
5. wieder IPv4 eingeben
6. diesmal auf ja klicken
7. Warten bis da "You can chat now" steht
8.Mit sich selbst chatten
Wenn man jetzt allerdings mit jemandem im Internet chatten möchte hat geht das Prinzip nicht. Auch nicht mit echter IP. Ich nehme an, dass das an nicht freigeschalteten Routerports liegt. Aber welche sind denn auf jeden Fall freigeschaltet?
Peanatus
//edit: Über konstruktive Kritk freu ich mich immer^^