Was für ein Error ?
Gibt AutoIt einen kritischen, oder werden die Clienten einfach
alle gelöscht ?
TCP
-
- [ gelöst ]
-
nof@ker2 -
20. April 2009 um 15:29 -
Geschlossen -
Erledigt
-
-
also jetzt ich habe etwas neues herausgefunden :
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 sorry das ich euch nochmal beschäftigt habe ... hab den fehler behoben
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit]
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
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-ErrorSchreib das in eine Do-Until -Schleife um und die Sache ist geritzt
-
- Offizieller Beitrag
@nof@ker kannst du mal dein doppelposting bitte lassen. Du kannst deinenen Post jederzeit editieren .
-