Duda sobre protocolos MSN en VB6

Iniciado por Spider-Net, 28 Agosto 2007, 22:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Spider-Net

Hola, pues llevo más o menos toda la tarde líado con un intento de cliente de msn. Ya sé que hay muchos códigos por google y eso, pero no me gustan, hay algunos que tienen demasiado código basura que no me sirve de nada, he leído bastante sobre los protocolos de MSN y creo que tengo ya una idea de como funcionan y si no me equivoco esto que hice, está correcto, sé que puede optimizarse, y lo haré pero de momento simplemente quería que conectase, el problema es que no lo hace. En el data_arrival del socket una vez conectado he capturado los datos que recibe y me sale ???????????????

No sé que pasará por eso os pido ayuda a ver si sabéis ayudarme un poco, el código es el siguiente:

Código (vb) [Seleccionar]
Dim data, aux, keys As String
Dim vaux As Variant

Private Sub Command1_Click()
Winsock1.Connect "messenger.hotmail.com", 1863
End Sub

Private Sub Winsock1_Connect()
Winsock1.SendData "VER 1 MSNP8 CVR0" & vbCrLf
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData data
Winsock1.GetData aux
data = Left(data, 3)

Select Case data

Case "VER"
Winsock1.SendData "CVR 2 0x0C0A winnt 5.1 i386 MSNMSGR 7.5.0311 MSMSGS " & Text1.Text & vbCrLf

Case "CVR"
'//EL TEXT1.TEXT CONTIENE LA CUENTA CON LA QUE QUIERO CONECTAR
Winsock1.SendData "USR 3 TWN I " & Text1.Text & vbCrLf


Case "XFR"  '//                       AQUÍ LO QUE HAGO ES COGER SOLO
aux = Mid(aux, 9, 18)             'LA PARTE DEL PAQUETE QUE TIENE LOS
vaux = Split(aux, ":")              'DATOS QUE ME INTERESAN
Winsock1.Close
Winsock2.Connect vaux(0), vaux(1)
End Select
End Sub


Private Sub Winsock2_Connect()
Winsock1.SendData "VER 4 MSNP8 CVR0" & vbCrLf
End Sub


Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Winsock2.GetData data
Winsock2.GetData aux

Select Case data
data = Left(data, 3)
Case "VER"
Winsock2.SendData "CVR 5 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS " & Text1.Text & vbCrLf

Case "CVR"
Winsock2.SendData "USR 6 TWN I " & Text1.Text & vbCrLf

Case "USR"
Dim a As Integer
a = Len(aux) - 11
keys = Mid(aux, 11, a)
Winsock3.Connect "login.passport.com", 443
End Select
End Sub

Private Sub Winsock3_Connect()
Winsock3.SendData "GET /login2.srf HTTP/1.0" & vbCrLf & _
                  "Accept: */*" & vbCrLf & _
                  "Host: login.passport.com" & vbCrLf & _
                  "Authorization: Passport1 0.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,signin=" & Text1.Text & ",pwd=password," & keys & vbCrLf

End Sub

Private Sub Winsock3_DataArrival(ByVal bytesTotal As Long)
Winsock3.GetData data
End Sub


Y bueno eso es todo el código, ni que decir tiene que no pasa ni de la primera acción, puse un timer que capturase en todo momento el valor "data" y desde que conecta y envía el primer comando ya el data se vuelve "????????" no sé por que, porque si hago los mismos pasos desde telnet o netcat me va devolviendo bien los valores.

Alguna idea para ayudarme por favor??

Gracias

APOKLIPTICO

Lo que pasa es que tenes que convertirlos a unicode.
Código (vb) [Seleccionar]

Strconv(data, vbUnicode)


Saludos
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Spider-Net

Muchas gracias, por encima lo he probado y ya no me da ese error, pero no llega a completarse el proceso, lo voy a revisar y si no encuentro solución lo publico a ver si podéis ayudarme, gracias por tu ayuda APOKLIPTICO ;)

Saludos


Spider-Net

OK ;) Ya lo tengo funcionando, muchísimas gracias por tu post KiZaR

Saludos