elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  obtener index de winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener index de winsock  (Leído 2,291 veces)
..::[ thekingkid ]::..

Desconectado Desconectado

Mensajes: 63



Ver Perfil
obtener index de winsock
« en: 17 Agosto 2006, 20:34 pm »

buenas... las tengas he aki un problema que me surgio y no he logrado resolver.. espero me puedan ayudar se agradece desde ante mano




tengo un winsock al que llame sock1
que permite varias conexiones al mismo puerto...

Citar
Private Sub sock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Sock1(Index).Close
Sock1(Index).Accept requestID
TxtConectados.AddItem Sock1(Index).RemoteHostIP & ":" & Sock1(Index).LocalPort & ":" & Conexiones
CCliente.AddItem Conexiones
Text2.Text = Conexiones
Conexiones = Conexiones + 1
Load Sock1(Conexiones)
Sock1(Conexiones).LocalPort = TxtPuerto.Text
Sock1(Conexiones).Listen

end sub

entonces a toda mandarina se conectan varios etc etc
 pero no e logrado hacer que se borren de la lista cuando se desconecten.... he intentado en el metodo  winsock_close()
 pero no funciona lo he intentado de esta manera

Citar
Private Sub Sock1_Close(Index As Integer)
TxtConectados.RemoveItem Sock1(Index).Tag


End Sub



entonces como obtengo el numero de el sock  que se ha cerrado...    tambien he intentado con un timer que  cheque el estado del sock(#sock).state=7 entonces que lo deje pero
si es diferente de 7 que lo quite de la lista como hacerlo gracias!!!!!!!!!!!!1







En línea

just wanna try
n3ts4mura1

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: obtener index de winsock
« Respuesta #1 en: 17 Agosto 2006, 21:13 pm »

Haber si esto te sirve:

Private Sub ws_ConnectionRequest(index As Integer, ByVal requestID As Long)
    Dim actIndex    As Integer
    Dim strData     As String
    On Local Error Resume Next
    Err.Clear
    '//Un usuario solicita nueva conexión y verificamos que se realiza
    '//a través del canal 0 de WS que es el servidor a la escucha.
    If index = 0 Then
        If freeSockets.Count <> 0 Then
            actIndex = freeSockets(1)
            freeSockets.Remove 1
            '//Aceptar conexión recuperando hilo
            users(actIndex) = ""
            rqs(actIndex) = CStr(requestID)
            ws(actIndex).LocalPort = 0
            ws(actIndex).Accept requestID
        Else
            idServer = idServer + 1
            actIndex = idServer
            '//Aceptar conexión en nuevo hilo
            ReDim Preserve users(1 To actIndex)
            ReDim Preserve rqs(1 To actIndex)
            users(actIndex) = ""
            rqs(actIndex) = CStr(requestID)
            Load ws(actIndex)
            ws(actIndex).LocalPort = 0
            ws(actIndex).Accept requestID
        End If
    End If
    '//preparar cadena de identificación
    strData = "[REQUEST]|" + CStr(requestID)
    sendSERVER actIndex, strData
End Sub


En línea

..::[ thekingkid ]::..

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Re: obtener index de winsock
« Respuesta #2 en: 17 Agosto 2006, 21:36 pm »

grax  pero no entendi mucho deja verlo mas detallado saludos!!!!
En línea

just wanna try
Castord

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: obtener index de winsock
« Respuesta #3 en: 19 Agosto 2006, 03:03 am »

Ese problema lo tuve yo y lo solucione  una condicional anidada que comparaba el texto de la lista con el ip de la maquina desconectada. Cada la  item de mi lista tiene un ip y un separador que con un simple algoritmo de descomposicion de cadenas que compara cada string. El drama surge con la tendencia de evento a repetirse indefinidamente.
Desarrola esa idea si te parece. A mi me funciono.
En línea

Desde Asunción - Paraguay
/*Es una ***** pero igual amo mi país!*/
..::[ thekingkid ]::..

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Re: obtener index de winsock
« Respuesta #4 en: 29 Agosto 2006, 22:38 pm »

perdon que me quede ausente por unos dias por el trabajo... pero he tenido un tiempo y pos yo esto habia pensado


el el conexion reques del winsock  puse esto
 pero antes les xplico
sock1= un winsock
txtconectados= un listbox
ccliente= un combox
text2.= otra caja de texto
conexiones= una variable tipo integer (entera)
he aki el codigo (aki todo bien)
cuando algun cliente se conecta se le añade a  el listbox txtconectados  se le añade la ip remota y el puerto local y el numero de index que le toco
 y luego al combox ccliente se le añade el index del winsock con el que se ha conectado osea que si ya habia ocupado el 1 seguia entonces el 2 etc etc etc
 a el text2.text tambien se le pone el numero de la variable conexiones (para que veamos cuantos clientes se han conectado y para que el timer tome su valor y  cheque el estado) luego se abre otro sock y se pone a la escucga de aki
todo bien
Código:
Private Sub sock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Sock1(Index).Close
Sock1(Index).Accept requestID
TxtConectados.AddItem Sock1(Index).RemoteHostIP & ":" & Sock1(Index).LocalPort & ":" & Conexiones
CCliente.AddItem Conexiones
Text2.Text = Conexiones
Conexiones = Conexiones + 1
'creamos otro socket para escuchar
Load Sock1(Conexiones)
Sock1(Conexiones).LocalPort = TxtPuerto.Text
Sock1(Conexiones).Listen
end sub

luego..... entonces utilizo un timer para comprobar el estado de cada uno de los index del sock  con el text2 este toma el valor de cada vez que se conecta el el sock conexion request
ahi esta.:


Código:
timer1_timer()
on error goto error

if text2.text=0 then
      if sock1(0).state=7 then
     
      else
      txtconectado.removeitem 0
      end if
else

      if sock1(text2.text).state=7 then
         else
          txtconectados.removeitem text2.text
         end if
end if
pero el caso el que  aunque esta conectado quita todos los que estan en el listado de el txtconectados(listbox) por que no se si obtiene otro index o????  ahi el problema espero que hayan entendido el code


exit sub
error:

end sub














En línea

just wanna try
MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: obtener index de winsock
« Respuesta #5 en: 30 Agosto 2006, 03:35 am »

hola, lo que debes hacer es dejarlos abiertos, y antes de que se conecte un nuevo cliente el servidor verifique si hay alguno abierto
para ocuparlo
asi:
Código:
'Carga un nuevo socket al arreglo y devuelve su indice
Private Function NuevoSocket() As Integer
    Dim numElementos As Integer 'numero de sockets
    Dim i As Integer 'contador
    'obtiene la cantidad de Winsocks que tenemos
    numElementos = Winsock2.UBound
    'recorre el arreglo de sockets
    For i = 0 To numElementos
        'si algun socket ya creado esta inactivo
        'utiliza este mismo para la nueva conexion
        If Winsock2(i).State = sckClosed Then
            NuevoSocket = i 'retorna el indice
            Exit Function 'abandona la funcion
        End If
    Next
    'si no encuentra sockets inactivos
    'crea uno nuevo y devuelve su identidad
    Load Winsock2(numElementos + 1) 'carga un nuevo socket al arreglo
    'devuelve el nuevo indice
    NuevoSocket = Winsock2.UBound
End Function
recuerda que la instrcuccio Winsok1.close tansolo cierra la conexion, no cierra el winsock

Atentamente

JUAN MANUEL LOMBANA
MEDELLÍN - COLOMBIA
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No veo tíldes al obtener texto mediante winsock
Programación Visual Basic
BlaineMonkey 3 2,539 Último mensaje 28 Junio 2011, 15:02 pm
por raul338
[C#] Obtener index de una Pagina Web Con Url Acortada
.NET (C#, VB.NET, ASP)
known 2 3,996 Último mensaje 8 Marzo 2012, 04:36 am
por known
Obtener el index.php de una pagina web...
Hacking
GonzaFz 0 4,010 Último mensaje 24 Junio 2012, 20:20 pm
por GonzaFz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines