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)
| | | | |-+  Problema con Winsock y cadenas Hexadecimales (guíenme)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Winsock y cadenas Hexadecimales (guíenme)  (Leído 7,575 veces)
cero_kill_byte

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Problema con Winsock y cadenas Hexadecimales (guíenme)
« en: 9 Mayo 2005, 20:36 pm »

Holas a tod@s

Les cuento mi drama por si alguien tiene un consejo

Con el Control Winsock de VB 6.0 defino, abro y monitoreo un puerto UDP bajo un w98 SE ( eso esta OK)  ;) .

Me debe llegar una cadena Hexadecimal a ese puerto. Pero al recuperarla con el Metodo GetData del Winsock, me la convierte automáticamente a decimal, es decir.

me llega por Winsock la cadena Hexadecimal &HA5 &H06 &HD4

Pero cuando consulto la variable donde queda el valor, me muestra 1656212

Obviamente  no me sirve, por que quiero tratar uno a uno cada caracter hexadecimal pero me deja la cadena en decimal, además que los concatena y no se donde empieza, ni donde termina cada valor.

He intentado con todos los tipos numeros del VB, pero no hay caso.
Alguien me puede explicar como (si es que se puede hacer) leer caracter por caracter desde el buffers del puerto.

Si Alguien me puede ayudar, se lo agradecería



En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con Winsock y cadenas Hexadecimales (guíenme)
« Respuesta #1 en: 10 Mayo 2005, 00:29 am »

Usa una matriz de bytes en lugar de una variable numérica. Y en lugar de GetData usa el método PeekData.

Por ej:

Código:
Option Explicit
Option Base 1

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim lpBuffer() As Byte
        Dim sHexVal$(), iCnt%
 
  ReDim lpBuffer(bytesTotal) As Byte
 
  Call Winsock1.PeekData(lpBuffer, vbArray Or vbByte, bytesTotal)

  iCnt = 1
  ReDim sHexVal$(iCnt)
 
  For i = 1 To bytesTotal
    If lpBuffer(i) = 32 Then
      iCnt = iCnt + 1
      ReDim Preserve sHexVal$(iCnt)
    End If
   
    sHexVal(iCnt) = sHexVal(iCnt) & Chr$(lpBuffer(i))
  Next
End Sub

Este código obtiene en una matriz los valores &HA5 &H06 &HD4 respectivamente, suponiendo que están separados por espacios (código ASCII 32).

Saludos.


En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
cero_kill_byte

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Problema con Winsock y cadenas Hexadecimales (guíenme)
« Respuesta #2 en: 10 Mayo 2005, 18:43 pm »

Gracias Slasher Keeper

pero la verdad es que no vienen separados por espacio (32)

y además como es un puerto UDP, el método peekData da el mismo resultado que el GetData; por que según lo que he leido, el PeekData sólo sirve para conexciones de tipo TCP/IP

agradezco el esfuerzo. pero debo seguir buscando  :(
En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con Winsock y cadenas Hexadecimales (guíenme)
« Respuesta #3 en: 11 Mayo 2005, 07:09 am »

Pss modificando un poco el code serviría...
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: Problema con Winsock y cadenas Hexadecimales (guíenme)
« Respuesta #4 en: 12 Mayo 2005, 19:43 pm »

Hola
Yo lo veo tan simple como enviar ese valor como string en vez de un valor numérico.

Un saludo
En línea

Callar es asentir ¡No te dejes llevar!
cero_kill_byte

Desconectado Desconectado

Mensajes: 8



Ver Perfil
Re: Problema con Winsock y cadenas Hexadecimales (guíenme)
« Respuesta #5 en: 15 Mayo 2005, 07:49 am »

Holas

Ambos tienen la razón, sea lo que sea que llegue por un puerto TCP/IP - UDP - Serial - Paralelo; Siempre seran caracteres...

Ya lo solucioné.

lo que YO hacía erroneamente era enviar caracteres hexadecimales pensando que así mismo llegarían.

Winsock1.senddata &HA5 & &HD4 & &H00

pero en realidad mandaba una cadena 1652120   :-[

lo que tenía que mandar era chr$(165) & chr$(212) & chr$(0)

Gracias a todos los interesados.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al concatenar cadenas
PHP
Feedeex 4 4,829 Último mensaje 13 Mayo 2011, 12:49 pm
por Feedeex
Problema con cadenas
Programación C/C++
Uknow 2 2,279 Último mensaje 11 Diciembre 2011, 23:37 pm
por Uknow
Problema cadenas
Programación C/C++
muymuyperdido 6 2,804 Último mensaje 8 Enero 2013, 15:48 pm
por leosansan
[C] Problema con cadenas
Programación C/C++
alvr 1 1,668 Último mensaje 9 Enero 2013, 21:41 pm
por durasno
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines