Si tu proyecto no va a tener muchos clientes conectados ps el for te sirve, de lo contrario aplica lo que dice BlackZero, yo lo haria mas o menos asi:
Declaro una variable global:
Dim LvwSockIndex(100) as Long
Cuando un cliente se conecte uso su index para almacenar la posicion que ocupa en el listview, asi no tendria que almacenar el valor del sock en el tag del listview:
Ejemplo ( esto iria donde agregas el cliente al listview ) :
Dim sItem as Listitem
Set sItem = Listview1.listitems.add (,, Index) ' Agrego el cliente al listview
sItem.Subitem(1) = "Cliente" ' Agrego algunos sub valores
' Luego Almaceno la posicion que ocupa en el listview en el indice de la matrix igual al indice del sock del cliente:
LvwSockIndex(Index) = Sitem.Index
Asi cuando el cliente mande un dato, solo tendrias que hacer esto:
Private Sub winsock1_DataArrival(index As Integer, ByVal BytesTotal As Long)
Listvieww1.ListItems.Item(LvwSockIndex(Index)).ListSubItems(8).Text = Datos
end sub
Espero que se entienda mas o menos la idea...