elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Enviar Imagenes por Winsock
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Enviar Imagenes por Winsock  (Leído 3,212 veces)
Brian1511

Desconectado Desconectado

Mensajes: 268


¿Quien soy esa es la gran pregunta?


Ver Perfil WWW
Enviar Imagenes por Winsock
« en: 13 Agosto 2013, 19:38 pm »

Hola a todos  aqui les vengo con una duda y es como envio imagenes a un winsock
de Cliente a Cliente.

Que haga la siiguiente funcion Cliente <-> Servido <-> Cliente

Tengo este codigo que encontre de una web pero solo envia una imagen pero quiero que envie porlomenos 5 o 6 imagenes de cliente a cliente.

Código:

     'Función Api Sleep Para generar una espera o retardo de tiempo 
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
    'Array de bytes para el gráfico 
    Dim imagen() As Byte 
    'Estas dos variables son 2 flags 
    Dim flag As Boolean 
    Dim progreso As Boolean 
     
    'Este Command es para conectarse al servidor 
    '********************************************************************* 
    Private Sub Command1_Click() 
    'Conectamos a la Ip y puerto 
    Winsock1.Connect Text1, CInt(Text2) 
    'Mostramos la Ip de conexión en el caption del Formulario 
    Me.Caption = "Estado de la conexion: Conectado a la IP: " + Text1 
    'Esto deshabilita y habilita controles 
    Command3.Enabled = True: Command1.Enabled = False: Command2.Enabled = True 
    End Sub 
     
    'Este Command es para desconectarse del servidor 
    '********************************************************************* 
    Private Sub Command2_Click() 
    'habilitamos y deshabilitamos los command 
    Command2.Enabled = False: Command1.Enabled = True 
     'cerramos la conexión 
    Winsock1.Close 
    End Sub 
     
    'Este Command es el que abre el cuadro de diálogo para seleccionar la imágen 
    '********************************************************************* 
     
    Private Sub Command3_Click() 
    On Error GoTo mensaje 
    With CommonDialog1 
    .DialogTitle = "Seleccionà el archivo de imagen" 
    .ShowOpen 
    If .FileName = "" Or .CancelError = True Then Exit Sub 'salimos si cancelamos 
    If MsgBox("¿Seleccionaste el archivo correcto??", vbInformation + vbYesNo, _ 
    "Enviar archivo de imagen") = vbNo Then Exit Sub 
     
    Winsock1.SendData .FileName 'enviamos la ruta 
    Picture1 = LoadPicture(.FileName) 'Cargamos la imagen en el Picture1 
    End With 
     
    Command4.Enabled = True 
    Command3.Enabled = False 
    Exit Sub 
    mensaje: 
    If Err.Number = 40006 Then MsgBox Err.Description, vbInformation, _ 
    "Error en la conexion": Command2_Click: Me.Cls 
    End Sub 
     
     
    'Este Command es el que envía la imágen al servidor 
    '********************************************************************* 
     
    Private Sub Command4_Click() 
    Dim tamaño As Long 
    progreso = True 
    'abrimos el archivo en modo binario de lectura 
    Open CommonDialog1.FileName For Binary Access Read As #1 
    tamaño = LOF(1) 'Tamaño en bytes de la imagen 
    'Redimensionamos el Array 
    ReDim imagen(tamaño - 1) 
    'Leemos todo el archivo y lo almacenamos en el array imagen 
    Get #1, , imagen 
    Close 
     
    flag = True 
    'Enviamos el array al servidor 
    Winsock1.SendData imagen 
    'Para el progreso del envio 
    ProgressBar1.Max = tamaño + 1 
    End Sub 
     
    Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, _ 
    ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal _ 
    HelpContext As Long, CancelDisplay As Boolean) 
     
    MsgBox "Error: " + Description 
     
    End Sub 
     
     
    'Este evento se dispara cuando se terminó de enviar completamente _ 
    todos los datos 
    '***************************************************************** 
    Private Sub Winsock1_SendComplete() 
    'Hacemos una pausa 
    Sleep 1500 
     
    If flag Then Command4.Enabled = True 
    If flag Then Winsock1.SendData 1: flag = False 
    Command4.Enabled = False 
    Command3.Enabled = True 
    If progreso Then 
    ProgressBar1.Value = 0 
    progreso = False 
    End If 
     
    End Sub 
     
    'Muestra mediante el evento SendProgress en la barra de progreso 
    '***************************************************************** 
    Private Sub Winsock1_SendProgress(ByVal bytesSent As Long, ByVal _ 
    bytesRemaining As Long) 
     
    If progreso Then 
    ProgressBar1 = ProgressBar1 + bytesSent ' bytesSent son los bytes enviados 
    End If 
    End Sub 
     
     
     
    Private Sub Form_Load() 
    Dim ancho As Integer 
    Me.ScaleMode = vbPixels: Me.ForeColor = vbBlue 
    Text1 = "127.0.0.1": Text2 = 1000 
    Command1.Caption = "conectar": Command2.Caption = "desconectar": _ 
    Command3.Caption = "-->> Buscar archivo de imagen para enviar al servidor": _ 
    Command4.Caption = "Enviar" 
     
    ancho = TextWidth(Command3.Caption) 
    Command3.Width = ancho + ancho / 10 
    Command2.Enabled = False: Command4.Enabled = False: Command3.Enabled = False 
    Label1.Caption = "Direccion ip" 
    Label2.Caption = "Puerto" 
    Label1.AutoSize = True: Label2.AutoSize = True 
    Me.Caption = "No conectado" 
    End Sub 
     
    Private Sub Form_Resize() 
    On Error Resume Next 
    Label1.Left = 10: Text1.Left = Label1.Width + 20: Label2.Left = Text1.Left + _ 
    Text1.Width + 20: Text2.Left = Label2.Left + Label2.Width + 10 
     
    Label1.Top = 20: Label2.Top = 20: Text1.Top = 20: Text2.Top = 20 
    Command3.Left = 20: Command3.Top = Text1.Top + Text1.Height + 20 
    Command1.Left = Me.ScaleWidth - Command1.Width - 20 
    Command2.Left = Me.ScaleWidth - Command2.Width - 20 
    Command4.Left = Me.ScaleWidth - Command4.Width - 20 
    Command1.Top = 20: Command2.Top = 20 + Command1.Height: Command4.Top = 50 + _ 
    Command2.Top 
    ProgressBar1.Left = 20: ProgressBar1.Width = Me.ScaleWidth - 40 
    ProgressBar1.Top = Me.ScaleHeight - ProgressBar1.Height - 10 
    Picture1.Left = 20: Picture1.Top = Command3.Top + 30: Picture1.Height = _ 
    Me.ScaleHeight - ProgressBar1.Height - Command3.Height - Text1.Height - 60 
    Picture1.Width = Me.ScaleWidth - Command2.Width - 50 
    End Sub 



Código:

    Dim flag As Boolean, nombre As String 
     
    Private Sub Command1_Click() 
        'Ponemos a la escucha el Winsock 
        Winsock1.Listen 
        Command1.Enabled = False 
        Command2.Enabled = True 
    End Sub 
     
    Private Sub Command2_Click() 
        'Desconectamos el Winsock 
        Winsock1.Close 
        Command1.Enabled = True 
        Command2.Enabled = False 
    End Sub 
     
    Private Sub Command3_Click() 
        End 
    End Sub 
     
    'Esto le asigna los caption y demás a los controles 
    Private Sub Form_Load() 
        Me.ScaleMode = vbPixels 
        Winsock1.LocalPort = 1000 'Le establecemos el puerto 
        Command1.Caption = "poner a la escucha" 
        Command2.Caption = "Desconectar" 
        Command3.Caption = "salir" 
        Check1.Caption = "Eliminar las imagenes temporales del directorio" 
        Me.Caption = "puerto determinado de comunicacon: 1000" 
    End Sub 
     
    'Redimensionar controles 
    Private Sub Form_Resize() 
        On Error Resume Next 
        Command1.Top = Me.ScaleHeight - Command1.Height 
        Command2.Top = Me.ScaleHeight - Command2.Height 
        Command3.Top = Me.ScaleHeight - Command3.Height 
        Command1.Left = 10: Command2.Left = Command1.Width + 10: _ 
        Command3.Left = Me.ScaleWidth - Command3.Width - 10 
        Picture1.Width = Me.ScaleWidth - 20 
        Picture1.Left = 10 
        Me.Height = Screen.Height / 2 
        Check1.Left = 10 
        Check1.Top = Me.ScaleHeight - Command1.Height - Check1.Height 
    End Sub 
     
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 
        Winsock1.Close 
        Winsock1.Accept requestID 
    End Sub 
     
    'Procedimiento que recibe los datos del cliente 
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
     
    'Array dinámico para almacenar el archivo 
    Dim imagen() As Byte 
     
        Select Case flag 
            Case False 
                'Esto se encarga de obtener el nombre del fichero 
                Winsock1.GetData nombre 
                nombre = Right(nombre, Len(nombre) - InStrRev(nombre, "\")) 
                Open App.Path + "\" & nombre For Binary As #1 
                flag = True 
            Case True 
                'Esto escribe en el disco el archivo de imagen 
                Winsock1.GetData imagen 
                If UBound(imagen) = 1 Then 
                    Close 
                    Picture1 = LoadPicture(App.Path + "\" + nombre) 
                    'Si está chequeado el chek eliminamos el archivo cuando finaliza 
                    If Check1 Then Kill App.Path + "\" + nombre 
                        flag = False 
                    Exit Sub 
                End If 
                'Escribimos en disco la imagen con Put pasandole el Array 
                Put #1, , imagen 
     
        End Select 
    End Sub 



Si alguien puede ayudarme! :D


En línea



Creador de BrainMind
noalg

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Enviar Imagenes por Winsock
« Respuesta #1 en: 13 Agosto 2013, 21:07 pm »

Vas a tener que adaptar el codigo para que el servidor cuando reciva la imagen la reenvie al cliente deseado, tambien diferenciando las conexiones que hacen los clientes(si es un mensaje, un envio de foto, u otros). Aunque si vas a enviar muchos archivos o imagenes la conexion C-S-C puede resultar lenta, quizas podrias abrir conexiones C-C para las partidas o envios de archivos.


En línea

::¿*¿---//&$#\\---▶{}◀---//#$&\\---?*?::


¡¡¡NO PINCHES AQUI SI NO QUIERES INFECTARTE CON UN VIRUS!!!
Brian1511

Desconectado Desconectado

Mensajes: 268


¿Quien soy esa es la gran pregunta?


Ver Perfil WWW
Re: Enviar Imagenes por Winsock
« Respuesta #2 en: 13 Agosto 2013, 23:32 pm »

Me parece muy buena tu respuesta, no conoces algo parecido a esto ?
he buscado y pues no encuentro como hacerlos.
En línea



Creador de BrainMind
noalg

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Enviar Imagenes por Winsock
« Respuesta #3 en: 14 Agosto 2013, 14:58 pm »

Bueno debes enviar indetificadores del mensaje en cada envío, para que de esta forma el servidor o cliente sepa como reaccionar ante esta información.
Puedes enviar informacion de esta manera: "IDENTIFICADOR|MENSAJE"
Por ejemplo: "msg|usuario7249|hola que tal"

Código
  1. Private Sub ws_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  2. Dim Datos As String
  3. Dim vDatos As Variant
  4.  
  5. ws(Index).GetData Datos 'Obtenemos los datos
  6. vDatos = Split(Datos, "|") 'Separamos segun el identificador |
  7.  
  8. Select Case vDatos(0) 'Hacemos una seleccion segun la primera parte de el mensaje
  9.      Case "msg" 'En caso de que quiera enviar un mensaje a un usuario
  10. 'Funcion que envia un mensaje(vDatos(2)) al usuario(vDatos(1))
  11.             EnviarMensaje(vDatos(1),vDatos(2))
  12.  
  13. End Select
  14.  
  15. End Sub
En línea

::¿*¿---//&$#\\---▶{}◀---//#$&\\---?*?::


¡¡¡NO PINCHES AQUI SI NO QUIERES INFECTARTE CON UN VIRUS!!!
Brian1511

Desconectado Desconectado

Mensajes: 268


¿Quien soy esa es la gran pregunta?


Ver Perfil WWW
Re: Enviar Imagenes por Winsock
« Respuesta #4 en: 15 Agosto 2013, 05:01 am »

gracias amigo me sivio tu aporte muchas gracias! :D
En línea



Creador de BrainMind
noalg

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Enviar Imagenes por Winsock
« Respuesta #5 en: 15 Agosto 2013, 13:13 pm »

Nada hombre si tienes mas dudas pregunta
En línea

::¿*¿---//&$#\\---▶{}◀---//#$&\\---?*?::


¡¡¡NO PINCHES AQUI SI NO QUIERES INFECTARTE CON UN VIRUS!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como enviar imagenes con winsock
Ingeniería Inversa
mashita 1 2,128 Último mensaje 13 Junio 2005, 23:05 pm
por Kizar
enviar list por winsock
Programación Visual Basic
jebg 3 2,165 Último mensaje 26 Julio 2005, 22:08 pm
por soplo
Enviar archivo Winsock
Programación Visual Basic
gmf_321 1 2,514 Último mensaje 27 Mayo 2006, 22:46 pm
por FaiF (A¥åHøRå)
Como puedo enviar imágenes y exes por winsock en vb6
Programación Visual Basic
hackertotal22 4 4,532 Último mensaje 14 Mayo 2011, 08:56 am
por hackertotal22
Enviar imagen por winsock
Programación Visual Basic
clanctkvolde 3 2,855 Último mensaje 30 Octubre 2016, 23:05 pm
por LeandroA
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines