J'avance j'avance

J'ai trouvé une autre erreur je crois bien.
Lors de du Func _TCPServer_Process(), tu fais des Call en envoyant $i en 2ème paramètre :
Call($__TCPSrv_Info_CB_LOST, $i, $__TCPServer_Sockets[$i][1])
Or c'est plutôt $__TCPServer_Sockets[$i][0] qui nous intéresse, car c'est la VRAIE ID du client. Ton exemple est alors faut car tu fais dans Func _TCP_Recv($iSocket, $sIP, $Data) :
Local $nick = _TCPServer_ClientPropertyGet($iSocket, 0)
Mais je peux me tromper car ce n'est pas mon UDF.
PS : Ce que j'appelle VRAIE ID, c'est par exemple 689 ou 742.
En passant, cette ID peut-elle être égale à 0 ? Car j'initialise $client_id (ma variable contenant le client principal de mon prog) à 0 
j'ai trouvé, la VRAIE ID c'est le retour de TCPListen

et donc je crois bien que tu t'es trompé.
Ma correction :
► Afficher le texte
Code : Tout sélectionner
Func _TCPServer_Process()
If Not _TCPServer_IsStarted() Then Return SetError(-1, 0, 0)
; ---
Local $hNewSocket, $recv, $tmp
; ---
; Check new connexions
$hNewSocket = TCPAccept($__TCPSrv_Info_SOCKET)
If $hNewSocket <> -1 Then
__TCPServer_StoreNewClient($hNewSocket)
EndIf
; ---
; Process Connected clients
For $i = 1 To $__TCPServer_Sockets[0][0]
If $__TCPServer_Sockets[$i][0] = -1 Then ContinueLoop
; ---
$recv = TCPRecv($__TCPServer_Sockets[$i][0], 4096)
; ---
; Check disconnection
If @error Then
If $__TCPSrv_Info_CB_LOST <> "" Then _
Call($__TCPSrv_Info_CB_LOST, $__TCPServer_Sockets[$i][0], $__TCPServer_Sockets[$i][1])
; ---
TCPCloseSocket($__TCPServer_Sockets[$i][0])
__TCPServer_ResetSocket($i)
EndIf
; ---
; Check Receiving
If $recv Then
$__TCPServer_Sockets[$i][3] = TimerInit()
$__TCPServer_Sockets[$i][2] &= $recv
; ---
If $__TCPSrv_Info_CB_RECEIVING <> "" Then _
Call($__TCPSrv_Info_CB_RECEIVING, $__TCPServer_Sockets[$i][0], $__TCPServer_Sockets[$i][1], BinaryLen($__TCPServer_Sockets[$i][2]))
EndIf
; ---
; Check timeout
If $__TCPServer_Sockets[$i][2] Then
If TimerDiff($__TCPServer_Sockets[$i][3]) >= $__TCPSrv_Info_TIMEOUT Then ; Timed-out!
If $__TCPSrv_Info_CB_TIMEDOUT <> "" Then _
Call($__TCPSrv_Info_CB_TIMEDOUT, $__TCPServer_Sockets[$i][0], $__TCPServer_Sockets[$i][1], BinaryLen($__TCPServer_Sockets[$i][2]))
; ---
$__TCPServer_Sockets[$i][2] = ""
EndIf
EndIf
; ---
; Check buffer
$tmp = __TCPServer_SocketCheckBuffer($i)
If IsArray($tmp) Then
For $elem In $tmp
If $__TCPSrv_Info_CB_RECV <> "" Then _
Call($__TCPSrv_Info_CB_RECV, $__TCPServer_Sockets[$i][0], $__TCPServer_Sockets[$i][1], $elem)
Next
; ---
$__TCPServer_Sockets[$i][2] = ""
EndIf
Next
; ---
Return 1
EndFunc