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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Aplicacion utilizando Socket Asincrono
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aplicacion utilizando Socket Asincrono  (Leído 4,351 veces)
llAudioslavell

Desconectado Desconectado

Mensajes: 177


Ver Perfil
Aplicacion utilizando Socket Asincrono
« en: 24 Enero 2012, 17:54 pm »

me vi obligado crear un nuevo post ya que el anterio no me lo respondian ...
bueno ya he aclarado algunas dudas despues de haber leido tanto

Encontre muchos tutoriales en Youtube y en google y llegue a terminar mi aplicacion utilizando Hilos,ya que mas he encontrado tutoriales con socket sincronos, pero ahora lo que quiero es utilizar socket asincronos.. quiero llegar a entender bien la diferencia entre estos 2 y de esta manera lograre entenderlo....ayer empeze con el proyecto guiandome de un tutorial en ingles:

Servidor:

    Dim SocketServer As Socket
    'Socket para aceptar la peticion del cliente
    Dim SocketClient As Socket
    'buffer
    Dim Bytesfrom(10024) As Byte

   Public Sub IniciarConeccion()

        SocketServer = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        'aqui le doy la IP y el Puerto por donde se realizara la comunicacion
        Dim ip As IPEndPoint = New IPEndPoint(IPAddress.Any, 1863)
        SocketServer.Bind(ip)
        'la cantidad de clientes (5)
        SocketServer.Listen(5)
        'con esto acepto cualquier peticion
        SocketServer.BeginAccept(New AsyncCallback(AddressOf Aceptar), Nothing)

    End Sub

    Private Sub Aceptar(ByVal acp As IAsyncResult)

        SocketClient = SocketServer.EndAccept(acp)
        'siguo aceptando peticiones del cliente
        SocketServer.BeginAccept(New AsyncCallback(AddressOf Aceptar), Nothing)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call IniciarConeccion()
   End Sub



Cliente:


Public Class Form1
    Dim Bytesfrom(10024) As Byte
    Dim SocketClient As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

    Private Sub Conectar_CS()

        Dim IPAddres As IPAddress
        IPAddres = IPAddress.Parse(txt_ip.Text)
        Dim PuertoIP As IPEndPoint = New IPEndPoint(IPAddres, 1863)
        'me conecto al servidor
        SocketClient.BeginConnect(PuertoIP, New AsyncCallback(AddressOf Conectar), Nothing)
    End Sub

    Private Sub Conectar(ByVal ar As IAsyncResult)
        SocketClient = ar.AsyncState
        SocketClient.EndConnect(ar)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call Conectar_CS()
    End Sub


falta mas codigo para enviar y recibir mensajes pero yo quize hacerlo por partes.. o sea, que primero solo me mande un mensaje informandome que ya se establecio la conexión.. despues ya avanzar con la mensajeria y esas cosas...
Ahora esto lo he probado en mis 2 ordenadores y nada .... tambien probe  esto en el servidor y en el cliente .. solo que en el cliente lo cambie por SocketCliente.conne... bla bla:

     If SocketServer.Connected = True Then
            MsgBox("Conectado. . . .")
        End If


en el servidor:
BeginAccepted-  acepta la peticion de algun cliente.
en el cliente:
BeginConnected- con esto el cliente envia una peticion al servidor para conectarse


pero  nada... cuando trato de conectar el cliente con el servidor ni el mensaje y ni un error me da... =/  si algo esta mal en el codigo corriganme porfavor ya que el tutorial estaba en C# =/ ...

Espero sus aportes ya que este post tambien puede ayudar a otras personas que intenten crear este tipo de aplicacion....
Salu3 !! ^^






« Última modificación: 24 Enero 2012, 18:15 pm por Audioslave™ » En línea

112358

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Aplicacion utilizando Socket Asincrono
« Respuesta #1 en: 20 Agosto 2013, 16:17 pm »

Estoy renegando con lo mismo :-\


En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Aplicacion utilizando Socket Asincrono
« Respuesta #2 en: 27 Agosto 2013, 09:22 am »

Los métodos asíncronos son una forma genérica de llevar la ejecución de un determinado método a un thread donde se ejecutara por separado del thread principal y regresara a él una vez haya terminado a través del método que se le haya indicado al iniciar.

La implementación de un método asíncrono es siempre la misma, para un método 'Ejemplo' que debe ejecutarse asicronicamente existe un Begin/EndEjemplo, el Begin siempre lleva la firma (parámetros adicionales, Callback, Object), los parámetros adicionales son los datos que necesita el método 'Ejemplo' para ser ejecutado, el Callback es la referencia al método que será llamado cuando la ejecución del método 'Ejemplo' termine, Object lo podemos usar como un canal extra para transmitir información que queramos usar luego terminar el procesamiento del método 'Ejemplo', al llamar al método 'BeginEjemplo' este llama asincronicamente al método 'Ejemplo', una vez que termina la ejecución es llamado el método al que se hacia referencia en el Callback, este método debe tener la firma (IAsyncResult) y debe llamar inmediatamente a 'EndEjemplo' pasandole como parámetro el IAsyncResult, IAsyncResult.AsyncState es una variable de tipo Object que contiene el objeto pasado al método 'BeginEjemplo', 'EndEjemplo' tiene como salida el mismo tipo que 'Ejemplo' y la salida del método 'EndEjemplo' será el resultado de haber ejecutado 'Ejemplo', cabe destacar los detalles importantes, todos las excepciones generadas en el método 'Ejemplo' serán redireccionadas y la lanzadas en el método 'EndEjemplo' así que es recomendable ejecutarlo en un bloque Try, el orden BeginEjemplo->Ejemplo->EndEjemplo, no se puede violar, no se pueden hacer 2 llamadas a 'BeginEjemplo' si haber cerrado antes la llamada anterior con el método 'EndEjemplo'.

Esta marcado con CheckForIllegalCrossThreadCalls = False, por que no es el fin exponer los delegados sino el funcionamiento de los sockets únicamente pero lo correcto es usar delegados para la comunicación con la UI.

Aquí hice un ejemplo básico pero completo en VB de la implementación de los Sockets asíncronos en un Chat, con control de errores y UI:

Souce Files
http://www.speedyshare.com/bFhrM/ChatExample.rar
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
URLDownloadToFile no asincrono
Programación Visual Basic
Lupin 5 5,309 Último mensaje 25 Octubre 2009, 08:15 am
por cobein
Como File Uploader Asincrono ?
PHP
Diabliyo 7 5,978 Último mensaje 14 Agosto 2010, 01:51 am
por raul338
Aplicacion utilizando Socket
.NET (C#, VB.NET, ASP)
llAudioslavell 1 1,975 Último mensaje 24 Enero 2012, 18:13 pm
por llAudioslavell
Acceso asincrono a Variables
Desarrollo Web
AlbertoBSD 3 2,261 Último mensaje 26 Agosto 2016, 20:04 pm
por AlbertoBSD
¿Qué ocurre con el socket? se congela la aplicación
Java
miltonprogramador 3 2,661 Último mensaje 30 Diciembre 2016, 05:05 am
por miltonprogramador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines