Ayuda con Winsock

Iniciado por sebah97, 4 Febrero 2010, 21:11 PM

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

sebah97

Tengo un problema, yo estaba haciendo un programita que le envie a mi NOTBUK que teclas estoy apretando (Arriba,Abajo,Derecha,Izquierda) probé poniendo la IP de mi notbuk y no funciona. Después puse la ip de mi pc fija y tampoco anda y más tarde puse 127.0.0.1 y tampoco :S.

Les dejo los Codigos del cliente y Servidor:

CLIENTE:
Código (vb) [Seleccionar]
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vbkey As Long) As Integer

Private Sub Form_Load()
With Winsock1
        .Close
        .RemoteHost = "127.0.0.1" ' También probe poniendo "localhost"
        .RemotePort = "1660"
        .Connect
    End With
   
    Winsock1.SendData Label1
   
End Sub

Private Sub Timer1_timer()



Dim i As Integer
'
For i = 8 To 222

x = GetAsyncKeyState(i)

If x = -32767 Then

Select Case i
Case vbKeyLeft: Label1.Caption = "Izquierda"
Case vbKeyUp: Label1.Caption = "Arriba "
Case vbKeyDown: Label1.Caption = "Abajo"
Case vbKeyRight: Label1.Caption = "Derecha"
End Select

End If
Next
End Sub


SERVIDOR:
Código (vb) [Seleccionar]
Private Sub Form_Load()
With Winsock1
        .Close
        .LocalPort = "1660"
        .Listen
    End With
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dat As String

    Winsock1.GetData dat, vbString
    Label1 = dat & vbCrLf

End Sub


Espero que me puedan ayudar.

xmbeat92

If X <>  0  then ....

eso debe ser
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

Sm0kes

Donde kedo el winsock1.Accept requestID ???? como van a poder interactuar el cliente y el servidor

Nanoc

Se ve muy claramente XD prueba con este codigo

Private Sub Timer1_timer()

Dim i As Integer
'
For i = 8 To 222

x = GetAsyncKeyState(i)

If x = -32767 Then

Select Case i
Case vbKeyLeft: Label1.Caption = "Izquierda"
Case vbKeyUp: Label1.Caption = "Arriba "
Case vbKeyDown: Label1.Caption = "Abajo"
Case vbKeyRight: Label1.Caption = "Derecha"
End Select

End If
Next
winsock1.senddata Label1.caption
End Sub


No tengo ni idea de como funciona esa api, pienso que te devuelve en la variable que le pasas un valor correspondiente a una tecla, pero entonces, para que pones el bucle??

xmbeat92

#4
cuando se invoca esta api,  se le pasa como argumento la tecla virtual para corroborar si esta presionada, en caso de que sea asi, te devuelve un valor (no se cual).
el bucle lo hace para ir probando tecla por tecla a ver si esta presionada.

en  mi opinion el interval del timer ponlo en 1

http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein

Nanoc

Si la api funciona como dices tendras que comprobar el valor que retorna la api y si el valor indica que esa tecla esta presionada enviarlo por el socket