Home Chat

  • Hallo,
    Ich würde gerne einen Chat programmieren mitdem man die recher in seinem Netzwerk anschreiben kann :thumbup:
    Leider bin ich in AutoIT noch nicht so gut deshalb wollte ich fragen ob ihr mir jetzt etwas helfen könntet.
    Ich habe schon eine GUI gemacht und ich würde mich freuen wenn mir einer helfen würde diese GUI so umzubauen das dder Chat geht .
    ich hab auch schon etwas geguckt aber ich hab immer nur online chats gefunden
    Ich freue mich über jegliche hilfe

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Home Chatter", 367, 149, 497, 387)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 8, 8, 345, 33)
    _GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
    $Button1 = GUICtrlCreateButton("Senden", 8, 104, 353, 33, $WS_GROUP)
    $Input1 = GUICtrlCreateInput("Nachricht", 8, 64, 353, 21)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    Außerdem ich habe mir gedacht das die Nachrichten als MsgBox ankommen!
    MFG ChingsKhane

  • Ne, ich finde den Chat nicht so toll weil der funtioniert nur mit einem Server.
    Außerdem möchte einen offline chat also nur fürs Netzwerk. :(

  • Du meinst eine Client zu Client Verbindung?
    Schau dir mal die ganzen Beispiele zu TCP an...
    Da wirst du bestimmt was finden.
    Wenn du weitergekommen bist und immer noch Probleme hast, kannst du uns ja mal dein Script posten ;)

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Ich will garnichtsgroßes mit verbindungen machen ich will dann man wie in der GUI oben die IP von dem rechner in deinem Netzwerk angibt und dann eine nachricht schreibt.
    Wenn man auf senden klick sol die eingegebene nachricht als msgbox auf dem Computer mit der IP die man oben angegeben hat erscheinen :(

  • In der Hilfe (F1) sind unter [Function Reference > Network Management] mehrere TCP- Befehle erklärt. Schau dir das mal an.

    Viele Grüße,
    HopFail

    Einmal editiert, zuletzt von HopFail (22. Mai 2010 um 12:32)

  • Schau dir mal die beispiele aus der hilfe zu TCPRecv und TcpSend an , die funktionieren auch, die kannst du ja dan umbauen und erweitern

    Mfg.simon

  • @ChingsKhane, dir ist schon klar, dass wenn du an einen Rechner eine Nachricht senden willst, dass dort auch ein Skript auf deine Nachricht warten MUSS.

    Das Grundlegende Prinzip von TCP funktioniert so: PC1 will eine Verbindung zu PC2 herstellen, PC1 verwendet TCPConnect mit passender IP und PORT, PC2 MUSS TCPAccept in einer Schleife/Adlib laufen lassen, damit er jederzeit auf die Verbindunganfrage von PC1 reagieren kann. Ist die Verbindung einmal hergestellt, kann man mit TCPRecv und TCPSend Daten zwischen den PCs hin und herschicken.

    Dein Problem ist meiner Meinung nach folgendes: Wenn du zB 5 Rechner hast und KEINEN Sever verwenden willst, und jeder Rechner mit jedem Rechner kommunizieren soll, dann muss jeder Rechner ständig auf eine Verbindung auf einem bestimmten PORT lauschen.

    TCP ist ein Thema, wo man einmal die Grundlagen verstehen muss, und dann kann man es beliebig auf alle möglichen Arten anwenden, also schau dir bitte, wie auch meine Vorposter schon geschrieben haben, DIE GRUNDLAGEN AN! und wenn du es geschafft hast, dass du einmal Daten zwischen 2 PCs austauschst, dann kannst du noch immer einen neuen Thread erstellen, falls du dann nicht weiter weist.
    Denn was bringt es dir, wenn wir dir ein fertiges Skript hineinschreiben?! (was übrigens, dann ein Fall für die Jobbörse wäre, und dich etwas kosten würde, unsere Zeit ist auch begrenzt...)

  • So, das hier hab ich vor einiger Zeit mal gebastelt:
    Ist Client und Server in einem:

    [autoit]

    #include <GUIConstantsEx.au3>

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

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

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

    ;IP, Port und Nick von Server (anderer PC)
    $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...")
    Send("{ENTER}")
    Send("Connection von " & $ip & " zu " & $ip2 & " wurde aufgebaut, falls IP richtig")
    Send("{ENTER}")

    [/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]

    $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]


    Ziemlich ausbaufähig, zumindest da ich Send noch durch ControlSend tauschen sollte... kannst ja dran weitermachen...
    Ist soweit leider nur für 2 PCs