TCPSend an alle und _GUIListView_AddItem Problem

  • Guten Tag Community ich habe folgendes Problem,

    ich schreibe grade einen Multichat wo der Client den Text an den Server sendet und der Server es an alle Clients zurücksenden soll nur weiß ich nicht wie man an alle verbundene Clients etwas sendet


    Zum zweiten Problem:
    Wenn ich den Befehl

    [autoit]

    _GUICtrlListView_AddItem($ListView1,"Nilo|seine IP",0)

    [/autoit]

    benutze wird der Text nur in einer Spalte angezeigt,hier mein Script:

    [autoit]

    #include <GDIPlus.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiRichEdit.au3>
    #include <EditConstants.au3>
    #include <ListViewConstants.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

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

    TCPStartup()

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

    $ChatSocket = TCPListen("5.100.47.225",7423)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Emerald Server", 731, 445, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 8, 8, 441, 433)
    $ListView1 = _GUICtrlListView_Create($Form1,"",460,8,192,124)
    $1 = _GUICtrlListView_AddColumn($ListView1,"Name",90,0)
    $2 = _GUICtrlListView_AddColumn($ListView1,"IP",110,1)
    $combo = GUICtrlCreateCombo("",460,400)
    GUICtrlSetData(-1,"Kick|Bann|Ping")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlListView_AddItem($ListView1,"Nilo|seine IP",0)

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Hi Nilo

    schau dir mal TCPSend an
    das müsste an alle clients sendn

    also:
    der client sendet mit TCPSend an den SErver
    der server sendet das mit TCPRecv empfangene wieder mit TCPSend an die cllients
    Die Clients empfangen dass damm mit TCPRecv

    müsste an alle gehen

    gruss Simon

  • das problem ist das man tcpconnect bracuht und da muss man ip und port angeben oder kann manbei conenction bei tcpsend auch die server variable angeben(von tcplisten)

  • Doch:

    [autoit]

    TCPSend($iSocket,$sNachricht)

    [/autoit]


    Du musst einfach nur bei der ersten verbindung vom client zum server beim server die SocketID speichern. dann bei tcp send damit senden.
    lg jakolo

    edit:

    Der Server:

    [autoit]


    $MainSocket = TCPListen ("127.0.0.1",3000)
    While 1
    $NewSocket = TCPAccept($MainSocket)
    If $NewSocket >= 0 Then
    TCPSend ($NewSocket,"Nachricht!")
    EndIf
    WEnd

    [/autoit]

    Der Client:

    [autoit]


    $MainSocket = TCPConnect("127.0.0.1",3000)
    Do
    $Empfangen = TCPRecv($MainSocket,2048)
    Until $Empfangen <> ""
    MsgBox (0,"Nachricht!","Nachricht: " & $Empfangen)

    [/autoit]

    Das hab ich grad aus dem Kopf geschrieben also keine Garantie ;)

    6 Mal editiert, zuletzt von Jakolo (2. November 2009 um 20:26)

  • das funktioniert nicht das habe ich mir eigentlich auchs chon gedacht da ich gar nicht verstehe was du vorhast

  • Die nachrichten werden über das internet per tcp an die angegebene ip gesendet
    somit wird die ip des servers immer gebraucht

    gruss Simon