Autor
|
Tema: Duda con Sockets sincrono y asincrono .. (Leído 18,366 veces)
|
llAudioslavell
Desconectado
Mensajes: 177
|
hola bueno soy yo denuevo con mis dudas.... necesito tener todo claro para poder terminar perfectamente mi aplicacion cliente-servidor:
Socket sincriono: -sockets que se bloquean hasta que han recibido toda la información -En este tipo de socket, cuando haces una llamada para recibir, por ejemplo, la llamada a la funcion no termina hasta que recibe los datos, esto puede cogelar tu aplicacion.
Socket asincrono sockets que no se bloquean y tenemos q ver si nuestro buffer se ha llenado.
He aqui, he citado las definiciones de algunos usuarios, las mas claras, creo yo, pero creo haber entendido solo poco y quisiera que alguien de ustedes me explicara un poco mejor todo lo que he citado y me respondan algunas dudas:
-Con respecto a Socket sincriono: - ¿ Que quiere decir con: Socket que se bloquean ? - "hasta que han recibido toda la informacion" ¿ Esto se refiere que el mensaje que envio el cliente al servidor, ha llegado sin ningun problema ?
- "En este tipo de socket, cuando haces una llamada para recibir, por ejemplo, la llamada a la funcion no termina hasta que recibe los datos, esto puede cogelar tu aplicacion.", todo esto quiere decir que el cliente o servidor se cuelga una vez que se alla recibido el mensaje (datos) ???
Con respecto a Socket asincrono: - ¿ a que le llama buffer, que Clase en VB.NET es y como funciona este ?
- y por ultimo.... normalmente cual de estos metodos es mas usado en la actualidad y por que... hay alguna ventaja ???
Se los agradeceria muchisimo ... no crean que quiero todo resuelto...estoy leendo bastante pero me complico un poco con el tiempo por mis otras labores..
Muchas Gracias Salu2""
|
|
« Última modificación: 7 Enero 2012, 23:43 pm por Audioslave™ »
|
En línea
|
|
|
|
llAudioslavell
Desconectado
Mensajes: 177
|
Espero anciosamente respuestas.... estoy leendo mas y cada vez mas tengo mas dudas y no encuentro soluccion en Internet .... Gracias.. Salu2 !!!
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
-Con respecto a Socket sincriono: - ¿ Que quiere decir con: Socket que se bloquean ? - "hasta que han recibido toda la informacion" ¿ Esto se refiere que el mensaje que envio el cliente al servidor, ha llegado sin ningun problema ? Quiere decir que tu aplicación irá ejecutando hasta que espere información, luego de lo cual se detendrá y quedará a la espera de recibir esa información. - "En este tipo de socket, cuando haces una llamada para recibir, por ejemplo, la llamada a la funcion no termina hasta que recibe los datos, esto puede cogelar tu aplicacion.", todo esto quiere decir que el cliente o servidor se cuelga una vez que se alla recibido el mensaje (datos) ??? Lo mismo de antes, hasta recibir todos los datos no sigue. Con respecto a Socket asincrono: - ¿ a que le llama buffer, que Clase en VB.NET es y como funciona este ? Por ejemplo un array de bytes en el cual irías almacenando la información a medida que llega. En el primer caso, la aplicación se bloquea y no sigue hasta bien reciba toda la información. En el segundo caso, la aplicación sigue y va actuando a medida que recibe la información. Una "dice" ... "espero a recibir la información para seguir", y la otra ... "a medida que llegue la información, me vas avisando". - y por ultimo.... normalmente cual de estos metodos es mas usado en la actualidad y por que... hay alguna ventaja ??? Depende de lo que estés buscando en tu aplicación, en algunos casos se hará uso de sockets sincrónicos, en otros asincrónicos, y en otros incluso sincrónicos y threads Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
llAudioslavell
Desconectado
Mensajes: 177
|
Quiere decir que tu aplicación irá ejecutando hasta que espere información, luego de lo cual se detendrá y quedará a la espera de recibir esa información. Lo mismo de antes, hasta recibir todos los datos no sigue. Por ejemplo un array de bytes en el cual irías almacenando la información a medida que llega. En el primer caso, la aplicación se bloquea y no sigue hasta bien reciba toda la información. En el segundo caso, la aplicación sigue y va actuando a medida que recibe la información. Una "dice" ... "espero a recibir la información para seguir", y la otra ... "a medida que llegue la información, me vas avisando". Depende de lo que estés buscando en tu aplicación, en algunos casos se hará uso de sockets sincrónicos, en otros asincrónicos, y en otros incluso sincrónicos y threads Saludos Exelente aclaracion..... ahora comprendo mejor las cosas... pero me quede en duda sobre tu ultima explicacion......... cuales son esos casos especificos ??? disculpa por tantas preguntas.. nuevamente aclaro que soy Novato ^^
|
|
|
En línea
|
|
|
|
CATBro
Desconectado
Mensajes: 156
Envidio la manera de pensar de Caboose
|
Se puede decir que los sockets asincronos, permiten que los metodos que usen tus sockets, funcionen por asi decirlo con "hilos integrados", actuan como sockets y hilos al mismo tiempo por asi explicarlos, los asincronos evitan que uses hilos en tus sockets.
Casos: CASO#1: Usando sockets sincronos sin hilos. Por ejemplo: Alguien te da una lista de tareas por hacer, jejje bueno.. 1.Caminar 10Kilometros 2.Respirar 3.Descansar
Usando sockets sincronos sin hilos , primero tendrias que caminar 10kilometros y ya recorrido los 10 kilometros, recien empezar a respirar, mientras no cumplas por asi decirlo el primer metodo, o tarea, no puedes respirar
CASO#2 Usando sockets sincronos con hilos Ejmplo:Alguien te una lista de tareas igual a la de arriba 1.Caminar 10Kilometros 2.Respirar 3.Descansar
Podrias poner la tarea de respirar en un hilo, y al mismo tiempo en que cumples con la tarea de caminar los 10 kilometros puedes respirar
CASO#3 Usando sockets asincronos Ejemplo: La mima lista de arriba de cosas por hacer
Puedes hacer todo al mismo tiempo
No se si me di a entender
Otro ejemplo pero en un servidor El servidor de tu chat,recive informacion en cualquier momento, pero no sabes en que momento puede llegarle el mensaje, pero mientras espera esa informacion, talvez quieres que haga otra cosa, puede que al servidor de tu chat quieras que tambien de hay tu puedas tecelar un mensaje y mandarlo a otro usuario. Por lo tanto tienes dos opciones usar sockets sincronos e hilos, o sockets asincronos.
No se si me di a entender Saludos
|
|
|
En línea
|
|
|
|
llAudioslavell
Desconectado
Mensajes: 177
|
Se puede decir que los sockets asincronos, permiten que los metodos que usen tus sockets, funcionen por asi decirlo con "hilos integrados", actuan como sockets y hilos al mismo tiempo por asi explicarlos, los asincronos evitan que uses hilos en tus sockets.
Casos: CASO#1: Usando sockets sincronos sin hilos. Por ejemplo: Alguien te da una lista de tareas por hacer, jejje bueno.. 1.Caminar 10Kilometros 2.Respirar 3.Descansar
Usando sockets sincronos sin hilos , primero tendrias que caminar 10kilometros y ya recorrido los 10 kilometros, recien empezar a respirar, mientras no cumplas por asi decirlo el primer metodo, o tarea, no puedes respirar
CASO#2 Usando sockets sincronos con hilos Ejmplo:Alguien te una lista de tareas igual a la de arriba 1.Caminar 10Kilometros 2.Respirar 3.Descansar
Podrias poner la tarea de respirar en un hilo, y al mismo tiempo en que cumples con la tarea de caminar los 10 kilometros puedes respirar
CASO#3 Usando sockets asincronos Ejemplo: La mima lista de arriba de cosas por hacer
Puedes hacer todo al mismo tiempo
No se si me di a entender
Otro ejemplo pero en un servidor El servidor de tu chat,recive informacion en cualquier momento, pero no sabes en que momento puede llegarle el mensaje, pero mientras espera esa informacion, talvez quieres que haga otra cosa, puede que al servidor de tu chat quieras que tambien de hay tu puedas tecelar un mensaje y mandarlo a otro usuario. Por lo tanto tienes dos opciones usar sockets sincronos e hilos, o sockets asincronos.
No se si me di a entender Saludos
Exelente amigo .. disculpame por no darte las gracias antes,.. es que no pude ya conectarme por falta de tiempo bueno exelente hermano !!!!! Entonces los socket asincrono me dejan recibir informacion(mensaje) de cualquier cliente en cualquier momento .... pero una duda, que Clases en .NET se utiliza para este caso.. y que clases se utiliza con el metodo de socket sincrono Espero respuestas hermanos ^^
|
|
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
Aprovecho este hilo para hacer una pregunta sobre el tema. Para un chat, el cual recibirá información en cualquier momento, qué sería más eficiente? el método sincrono con hilos o el método asincrono?
gracias!
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
que Clases en .NET se utiliza para este caso.. y que clases se utiliza con el metodo de socket sincrono
TcpClient para la implementación cliente y TcpServer para la parte del servidor. Estas dos clases son muy fáciles de emplear, aunque yo prefiero utilizar la Clase Sockets, pues TcpClient/Server están basadas en la última. Aprovecho este hilo para hacer una pregunta sobre el tema. Para un chat, el cual recibirá información en cualquier momento, qué sería más eficiente? el método sincrono con hilos o el método asincrono? gracias!
En mi opinión usaría sockets asíncronos, pues en un Chat te interesa enviar mensajes mientras los recibes, es decir, multi-tarea (enviar/recibir). Si lo implementaras bajo Sockets sincronos pues estarías esperando la llegada de información (paquetes) del otro extremo y bloquearías el proceso hasta que recibieras los datos. Todo depende del uso o implementación que quieras dar. Saludos!
|
|
|
En línea
|
|
|
|
TomaSs
Desconectado
Mensajes: 101
|
En mi opinión usaría sockets asíncronos, pues en un Chat te interesa enviar mensajes mientras los recibes, es decir, multi-tarea (enviar/recibir). Si lo implementaras bajo Sockets sincronos pues estarías esperando la llegada de información (paquetes) del otro extremo y bloquearías el proceso hasta que recibieras los datos. Todo depende del uso o implementación que quieras dar.
Saludos!
Pero por lo que yo he podido comprobar, con varios hilos también te permite estar recibiendo en un hilo, y enviar en otro hilo, no es así?
|
|
|
En línea
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Exacto. Podrías correr en un hilo el proceso de recibo de mensajes, de esta forma no bloquearía el hilo principal. El proceso de envio de mensaje los podrías implementar perfectamente en el hilo principal de la aplicación. Los métodos asíncronos utilizan funciones CallBack (de llamada) que permiten continuar con la ejecucción del código mientras se ejecutan las instrucciones de dichas funciones de llamada.
Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
URLDownloadToFile no asincrono
Programación Visual Basic
|
Lupin
|
5
|
5,289
|
25 Octubre 2009, 08:15 am
por cobein
|
|
|
Como File Uploader Asincrono ?
PHP
|
Diabliyo
|
7
|
5,942
|
14 Agosto 2010, 01:51 am
por raul338
|
|
|
Aplicacion utilizando Socket Asincrono
.NET (C#, VB.NET, ASP)
|
llAudioslavell
|
2
|
4,334
|
27 Agosto 2013, 09:22 am
por Keyen Night
|
|
|
Acceso asincrono a Variables
Desarrollo Web
|
AlbertoBSD
|
3
|
2,254
|
26 Agosto 2016, 20:04 pm
por AlbertoBSD
|
|
|
Junit asincrono
Java
|
alexis33de
|
0
|
2,219
|
13 Noviembre 2017, 15:30 pm
por alexis33de
|
|