Hola, como puedo enviar hexa en winsock??
en realidad, se hacerlo, pero no es compatible con los windows en chino, y necesito usarlo en un windows chino....
supongamos que quiero enviar este dato...
00AABBCC
yo no puedo poner winsock.senddata "00AABBCC"
sino que tengo que ponerlo en el ascii o el char de cada byte...
sería winsock.senddata Chr$(0) & Chr$(170) & Chr$(187) & Chr$(204)
o sino, convertirlo via hextoasc
winsock.senddata hextoasc ("00AABBCC")
esto va perfecto en los windows latinos, o con ingles.....
pero no sirve en los windows chinos....
de que manera enviar hexadecimal ustedes?
gracias
saludos
Bueno, se como resolverlo....
pero esto abre otro problema....
este problema se puede solucionar así:
sim st1(4) as byte
st1(0)= &H00
st1(1)=&HAA
st1(2)=&HBB
st1(3)=&HCC
pero esto sirve, cuando yo se de antemano que hay que enviar, y lo puedo codear...
pero que pasa si tengo que tomar los valores desde un textbox?? y los valores sean lo que ingresa otra persona?? o que el dato cambie basado en un calculo basado en un numero al azar?
ahí se complica la cosa....
Usa el objeto ADODB.Stream para transformar una cadena de texto ascii/unicode a stream Base64 y lo envias por winsock. Un ejemplo:
Function SendFile(A)
On Error Resume Next
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.LoadFromFile(A)
Set objXML = CreateObject("MSXml2.DOMDocument")
Set objDocElem = objXML.createElement("Base64Data")
objDocElem.dataType = "bin.base64"
objDocElem.nodeTypedValue = objStream.Read()
B = objDocElem.text
Winsock.SendData B
End Function
Llamo la función pasándole un fichero como variable:
SendFile("C:\hola.txt")
Con ADODB.Stream leo el fichero entero
Con MSXML2 transformo el stream a Base64
Envío el fichero codificado en Base64
Hay otras formas de hacerlo, por ejemplo transformar una cadena de texto a stream binario y enviarlo como un array de bytes.
Saludos
.
Hace mucho en este mismo foro se crearon cientos de funciones...
'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) //
' // //
' // Web: http://InfrAngeluX.Sytes.Net/ //
' // //
' // |-> Pueden Distribuir Este Código siempre y cuando //
' // no se eliminen los créditos originales de este código //
' // No importando que sea modificado/editado o engrandecido //
' // o achicado, si es en base a este código //
' ////////////////////////////////////////////////////////////////
Option Explicit
Enum ActionsHexStr
HexToString = 0
StringToHex
End Enum
Public Function HexAndString(ByVal vData As String, Optional Accion As ActionsHexStr = HexToString) As String
Dim LenBuffer As Long
Dim LenOfBuffer As Integer
Dim Puntero As Long
Dim I As Long
Dim vStep As Integer
If CBool(IIf(Accion = HexToString And (Len(vData) Mod 2) = 0, True, IIf(Accion = StringToHex, True, False))) Then
LenBuffer = IIf(Accion = HexToString, Len(vData) / 2, Len(vData) * 2)
LenOfBuffer = IIf(Accion = HexToString, 1, 2)
HexAndString = Space(LenBuffer)
vStep = IIf(Accion = HexToString, 2, 1)
Puntero = 1
For I = 1 To Len(vData) Step vStep
If Accion = HexToString Then
Mid(HexAndString, Puntero, LenOfBuffer) = Chr$(Val("&H" & Mid$(vData, I, 2)))
Puntero = Puntero + 1
Else
Mid(HexAndString, Puntero, LenOfBuffer) = Hex$(Asc(Mid$(vData, I, 1)))
Puntero = Puntero + 2
End If
Next I
End If
End Function
P.D.: Cuando termine de re-diseñar y de re-programar mi sitio host de archivos (FileX) vuelvo a montar mi blog.
Dulces Lunas!¡.
Hola, gracias a ambos...
esto funcionaría en un windows chino??
porque intenté como convertirlo a ascii
http://foro.elhacker.net/programacion_visual_basic/problema_con_winsocksendata_en_sistema_operativo_chino-t411129.0.html
gracias
SOLUCIONADO!!!
pude encontrar para activar la compatibilidad en el windows CHINO y ahora funciona perfecto :)
gracias!!!
(http://i.imgur.com/oSrwjaA.jpg)