Chat über TCP-Verbindung

  • Hey Leute,

    ich bin grad dabei nen kleines Chatprogrämmchen zu schreiben. Leider komm ich momentan einfach nicht weiter.
    mein Chatverlauf soll in der GUI &Anzeige (Editbox) dargestellt werden. gibt es bessere Varianten?!

    Ich poste einfach mal mein Clientscript :

    [autoit]

    #cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.6.1
    Author: myName
    Script Function:
    Template AutoIt script.
    #ce ----------------------------------------------------------------------------
    TCPStartup()

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    ;Statparameter
    $Server_IP = "no Server IP"
    $Verlauf = FileRead("logging.txt.")

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("ToIP by Timo _ Client Version ", 625, 445, 192, 124)
    ;Anzeige chat verlauf------------------------------------
    $Anzeige = GUICtrlCreateEdit($Verlauf, 40, 16, 361, 329)
    GUICtrlSetData(2, $Verlauf)
    ;--------------------------------------------------------
    $Input1 = GUICtrlCreateInput("", 40, 368, 265, 21)
    $Send = GUICtrlCreateButton("Send", 320, 368, 81, 25, 0)
    $Group_Server_Ip = GUICtrlCreateGroup("Server Ip Adresse", 424, 24, 185, 137)
    $IPAdresse_Input = GUICtrlCreateInput("", 440, 56, 145, 21)
    $IPAdresse_Bestatigen = GUICtrlCreateButton("Ok", 552, 88, 33, 17, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group_User_Ip = GUICtrlCreateGroup("Group_User_Ip", 424, 176, 185, 89)
    $User_IP_adresse = GUICtrlCreateLabel(@IPAddress1, 440, 208, 86, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $User_Name = GUICtrlCreateGroup("User_Name", 424, 288, 185, 57)
    $User_Name_bestatigen = GUICtrlCreateButton("Ok", 552, 312, 33, 17, 0)
    $chat_name_eingabe = GUICtrlCreateInput("", 440, 312, 97, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $IPAdresse_Bestatigen
    $Server_IP = GUICtrlRead($IPAdresse_Input)

    Case $Send
    Nachricht_Senden()

    Case $User_Name_bestatigen
    $user_name = GUICtrlRead($chat_name_eingabe)

    EndSwitch
    WEnd

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

    Func Nachricht_Senden ()
    $nachricht = GUICtrlRead($input1)
    $so = TCPConnect($Server_IP, 6776)
    If $so = -1 then MsgBox(0, "Error",$Server_IP)
    ;Nachricht generieren mit username
    $Nachricht_plus_username = $user_name&@crlf&$nachricht
    ;Nachricht senden
    TCPSend($so,$nachricht_plus_username)
    TCPCloseSocket($so)

    EndFunc

    [/autoit]

    meine Frage ist halt wie ichs einfach am besten realisieren könnte, also Verlauf etc.

  • am besten machst du eine ListView bzw. ListBox und ein Input.
    Musst mal googeln, in Youtube gabs auch mal ein Video, bei dem es ganz gut erklärt wurde, wie man über TCP einen Chat bastelt.

  • hallo,

    Ich fine die Idee von einem AutoIt Chat ganz cool und hab mal so eine grob version eines Clients erstellt:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    GUICreate("", 300, 300)
    $input = GUICtrlCreateInput("", 10, 10, 280, 20)
    $edit = GUICtrlCreateEdit("Hallo", 10, 40, 280, 200)
    $btn = GUICtrlCreateButton("Send", 10, 250, 280, 20)
    GUISetState()
    while 1
    $msg = GUIGetMsg()
    Select
    case $msg = $btn Or _IsPressed("0D")
    GUICtrlSetData($edit, GUICtrlRead($edit) & @CRLF & GUICtrlRead($input))
    GUICtrlSetData($input, "")
    sleep(75)
    case $msg = -3
    Exit
    EndSelect
    WEnd

    [/autoit]


    So in etwa könntest du es ja auch gestalten, ist nur eine idee, kannst es natürlich auch anders machen.

    mfg
    hauke96

  • Guten Morgen,

    die Idee eines Chat über TCP auf der Basis der Sprache Autoit ist keine neue Idee :) , dafür aber eine sehr gute Übung um mit TCP Verbindungen unter Autoit umzugehen.

    Hier sind ein paar Links die dir evt. weiterhelfen könnten:

    Link 1
    Link 2
    Link 3