TCP.Hilfe!

  • Hallo liebes Autoit Team :)
    Ich möchte ein Programm schreiben,das einen Server hat und einen Client.Wenn man den Server startet,wartet der auf einen benutzer(Client).Wenn ein Benutzer beigetreten ist,kann man vom Server aus eine Aufgabe schreiben(also z.b.was ist 1+1) die dann an den Client geschickt wird.Der Server wartet dann auf eine Antwort des Clients(Also auf das Ergebnis der Aufgabe).Wenn der Client dann das Ergebniss verschickt hat,gibt der Server eine MsgBox von sich aus wo dann das Ergebnis der Aufgabe drine steht.Wenn man dann auf "Ja" drückt ist die Aufgabe richtig und wenn auf "Nein" dann nicht.Das Ergebnis von der Aufgabe sowie der Eintrag ob das Ergebnis richtig war wird dann in eine Ini Datei geschrieben(optional.Ev gehts ja auch über TCPSend?).Das geht dann weiter bis zu 5 Aufgaben.Am Ende werden die Ergebnisse an den Client geschickt,der dann die Ergebnisse in einer MsgBox erhält.Das alles sollte ev über den TCP dienst von Autoit laufen.Ich habe den Script aus der Hilfe genommen,aber irgendwie blick ich da nicht durch warum ich mich nur einmal mit dem Server verbinden kann und wie ich das mit dem hin und herschicken mache.Schon einmal ein großes Danke an euch :)

  • Anstatt so einen langen text wärs besser wenn du einfach deine Frage stellst :D

    mit dem beispiel aus der hilfe kannst du nur 1 zu 1 connecten (soweit ich das in erinnerung hab)
    du brauchst vom server mehrere tcp-verbindungen zu den einzelnen clients.

    d.h. warten bis sich jemand verbindet. am besten die verbindung in einem array abspeichern und um 1 höher zum nächsten index zählen.

    gibt einige solche scripte hier im forum. such mal nach multi chat oder sowas in die richtung

  • Wenn du noch kein AutoIt beherschst, aber das Skript gerne hättest solltest du in der Jobbörse posten.
    Zeig uns erstmal dein Skript das du moment verwendest. :rolleyes:

  • Hab da mal einen Chat gebastelt wo jeder Client und Server gleichzeitig ist...
    vll hilft dir das weiter:


    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;IP, Port und Nick von Client
    $ip = "192.168.178.23"
    $port = 3000
    $nick = ""

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;IP, Port und Nick von Server
    $ip2 = "192.168.178.21"
    $port2 = 3000
    $nick2 = ""

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    TCPStartUp ()
    $server = TCPListen($ip,$port,1)

    [/autoit][autoit][/autoit][autoit]

    $form = GUICreate("Chat", 625, 445, 192, 124)
    $edit = GUICtrlCreateEdit("", 56, 16, 505, 265)
    $input = GUICtrlCreateInput("", 64, 336, 401, 21)
    $sender = GUICtrlCreateButton("Send", 488, 336, 97, 25, 0)
    GUISetState(@SW_SHOW)
    ControlClick("", "", $edit)
    Send("Connection von " & $ip & " zu " & $ip2 & " wird aufgebaut...")

    [/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $sender
    $client2 = TCPConnect ($ip2,$port2)
    TCPSend ($client2, GUICtrlRead($input))
    ControlClick ("","",$edit)
    Send("[" & @HOUR & ":" & @MIN & ":" & @SEC & "] " & $nick & ": " & GUICtrlRead($input),1)
    Send(" {Enter}",0)

    [/autoit][autoit][/autoit][autoit]

    EndSwitch

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $client = TCPAccept($server)
    If $client >= 0 Then
    Do
    $message = TCPRecv($client,2048)
    Until $message <> ""
    ControlClick ("","",$edit)
    Send("[" & @HOUR & ":" & @MIN & ":" & @SEC & "] " & $nick2 & ": " & $message,1)
    Send(" {Enter}",0)
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    TCPShutdown()

    [/autoit]
  • stayawayknight schrieb

    Hab da mal einen Chat gebastelt wo jeder Client und Server gleichzeitig ist...


    Danke das kann ich gut gebrauchen

    PokerFace schrieb

    Wenn du noch kein AutoIt beherschst, aber das Skript gerne hättest solltest du in der Jobbörse posten


    Ich behersche schon Autoit.Doch mit TCP komm ich noch nicht zurecht und ja ich hätte es in die Jobbörse posten sollen.Fehler macht doch mal jeder :D

    Schnitzel schrieb

    Anstatt so einen langen text wärs besser wenn du einfach deine Frage stellst


    Ja,aber so ist es ausführlicher ^^