TCP

  • Was für ein Error ?
    Gibt AutoIt einen kritischen, oder werden die Clienten einfach
    alle gelöscht ?

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • also jetzt ich habe etwas neues herausgefunden :D :
    Wenn ich das mit den Clienten Löschen herausnehme und einmal connecte geht es nicht .. Ich lass den Server offen und connecte ein zweites mal und wie aus Zauberei jetzt gehts aber warum ? :(

  • gut ich habs ich bin ein vollkommener trottel :D sorry das ich euch nochmal beschäftigt habe ... hab den fehler behoben :)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    TCPStartup()
    $MainSocket=TCPListen(@IpAddress1,28960)
    Dim $Acc[1]
    $Acc[0]=""
    $AccAdd=-1
    Do
    $AccAdd=TCPAccept($MainSocket)
    Until $AccAdd <> -1
    _ArrayAdd($Acc,$AccAdd)
    _ArrayDelete($Acc,0)
    AdLibEnable("_Send",300000)
    While 1
    $Accept=TCPAccept($MainSocket)
    If $Accept <> -1 Then
    _ArrayAdd($Acc,$Accept)
    EndIf
    For $i=0 to Ubound($Acc,1)-1
    $Recv=TCPRecv($Acc[$i],999999)
    If @error Then
    _ArrayDelete($Acc,$i)
    ContinueLoop
    EndIf
    If $Recv <> "" Then
    MsgBox(0,"test","success")
    For $j=0 to $i-1
    TCPSend($Acc[$j],$Recv)
    Next
    For $k=$i+1 to Ubound($Acc,1)-1
    TCPSend($Acc[$k],$Recv)
    Next
    EndIf
    Next
    WEnd
    Func _Send()
    For $i=0 to Ubound($Acc,1)-1
    TCPSend($Acc[$i],"ADMIN**"&"ADMIN ist online bitte pass auf was du sagst.")
    Next
    EndFunc

    [/autoit]


    Der Fehler lag in Zeile 18 For $i= !1! muss aber 0 heißen ...
    weil in Zeile 11 wird das leere Array gelöscht und der erste Socket rutscht auf 0 auf ... :) danke @ all
    mfg nof@ker

  • Ich hab noch eine Anmerkung:
    Soweit ich weiß wird die Endbedingung der For-Schleife, also
    hier das Ubound, nur einmal überprüft.
    Hatte das Problem letztens mit meinem Rat.:
    Wenn hier ein Client offline geht und du das entsprechende
    Array-Item löschst, hat das Array weniger Elemente !
    Bsp: 100 Clienten sind anfangs drin.
    Nummer 42 und 67 fliegen raus:
    Nur noch 98 Elemente - das Script läuft aber weiter bis 100 !
    ==> Subscript used with .. blabla-Error ^^

    Schreib das in eine Do-Until -Schleife um und die Sache ist geritzt ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

    • Offizieller Beitrag

    @nof@ker kannst du mal dein doppelposting bitte lassen. Du kannst deinenen Post jederzeit editieren .