Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Stelio Kontos en 23 Marzo 2011, 15:15 pm



Título: Recorrer Winsock
Publicado por: Stelio Kontos en 23 Marzo 2011, 15:15 pm
Estaba haciendo un bucle for recorriendo los items de un Listview para quitar los items correspondientes a conexiones cerradas, pero por algún motivo a veces se cerraban más de dos, entonces he hecho un bucle que recorre Winsock de lado a lado, pero no funciona:
Código
  1. Dim i As Long
  2.  
  3. For i = 0 To Winsock1.UBound
  4.  
  5. If Winsock1(i).State = sckClosed Then
  6.        ListView1.ListItems.Remove (i)
  7.        Winsock1(i).Close
  8. End If
  9.  
  10. Next


Título: Re: Recorrer Winsock
Publicado por: skyweb07 en 24 Marzo 2011, 13:53 pm
Claro que se tienen que borrar porque ese codigo lo que hace es borrar el Item (i) del Listview que supuestamente es el mismo que el del winsock, lo cual no es correcto, por lo que te aconsejo utilizar el valor .tag del item del listview para ponerle la id del socket y asi poder borrar el item correcto, luego comparas y si es ese el mismo del que esta desconectado lo borras sino, pues sigues ;)

Código
  1. Dim i as long
  2. For i = 0 to Winsock1.Ubound
  3. If Winsock1(i).state = sckClosed then
  4.   For z = 1 to Listview1.listItems.count
  5.     If ListView1.ListItems.Item(z).tag = Winsock1(i).index then
  6.        ListView1.ListItems.remove i
  7.     end if
  8.     doevents
  9.   next z
  10. end if

next i


y cuando añadas un item al Listview en el .tag del item le pones como valor el index del winsock

ListView1.add lalalala
ListView.tag = Index

Eso es todo, prueba y dime k tal ;)