Autor
|
Tema: array de sockets (Leído 4,100 veces)
|
grester43hck
Desconectado
Mensajes: 57
|
Hola!! estoy intentando hacer un array de shockets, pero me asaltan varias dudas y problemas. ¿Todos esos sockets pueden escuchar en el mismo puerto? y si es asi, como ago una vez que este en tiempo de ejecucion para abrir mas sockets? es decir, si tengo el index 0 desde el principio y una vez que ese queda conectado quiero crear el index 1, ¿como hago? he intentado algo asi: Pero al utilizarlo despues me da error, como si no se ubiese creado. Gracias.
|
|
« Última modificación: 12 Agosto 2010, 17:27 pm por grester43hck »
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
Yo intentaria tener 2 controles sock, uno el de la matriz de controles y otro de respaldo.
Osea:
Cliente --> "quiero conectarme" ---> servidor(a la escucha por el sock de respaldo) Servidor crea el "index1", lo configura(el puerto) y guarda la config en ej parametros Servidor --> "desconectate de mi y reconectate a:" & parametros ---> cliente Cliente se desconecta y se conecta al nuevo puerto que se le asigno Cliente --> "quiero conectarme" ---> servidor(a la escucha por el array creado) ¡¡¡conexión ESTABLECIDA!!!
TERMINADO !!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
grester43hck
Desconectado
Mensajes: 57
|
HOLA!!!
Yo intentaria tener 2 controles sock, uno el de la matriz de controles y otro de respaldo.
Osea:
Cliente --> "quiero conectarme" ---> servidor(a la escucha por el sock de respaldo) Servidor crea el "index1", lo configura(el puerto) y guarda la config en ej parametros Servidor --> "desconectate de mi y reconectate a:" & parametros ---> cliente Cliente se desconecta y se conecta al nuevo puerto que se le asigno Cliente --> "quiero conectarme" ---> servidor(a la escucha por el array creado) ¡¡¡conexión ESTABLECIDA!!!
TERMINADO !!!
la parte que e marcado, es la que no comprendo demasiado, te refieres a enviarle al cliente el nuevo puerto (que es el del 2 sock), crear el sock(1) y que el cliente se conecte no? si es asi bien pero el paso de crearlo no se como hacerlo :-/ Gracias
|
|
|
En línea
|
|
|
|
cassiani
Desconectado
Mensajes: 978
« Anterior | Próximo »
|
Aplicación Servidor Multi-conexión1. Vista general del funcionamiento
Como vimos anteriormente en el Servidor mono-conexión, dejábamos un socket a la escucha de conexiones entrantes, y al recibir una petición de conexión (evento "ConnectionRequest") le decíamos al Winsock que aceptara esa identidad y este a su vez establecía una conexión con el cliente.
Los principios para crear un servidor multi-conexión son los mismos, salvo que necesitamos dejar un socket escuchando permanentemente conexiones entrantes, este nunca se debe cerrar (al contrario de lo que pasaba en el caso del servidor mono-conexión), entonces ¿como podemos aceptar una conexión si no podemos cerrar el socket que tenemos a la escucha?, ¿acaso podemos dejar un mismo socket escuchando conexiones y atendiendo otra a la vez?, la respuesta es No podemos, pero nada nos impide hacer que otro socket que se encuentra inactivo acepte y atienda una petición de conexión. De esta forma el trabajo total se reparte entre varios sockets: un socket permanentemente escuchando peticiones de conexión (recepcionista) y otros tantos socket que se encargan de atender a cada uno de los clientes (ejecutivos).
2. Creando el arreglo de WinSocks
Para poder trabajar con varias conexiones a la vez necesitamos varios sockets disponibles, ya que cada uno solo puede trabajar con una sola conexión, y como en principio no conocemos la cantidad de Winsocks que necesitaremos debemos inclinarnos por crear Arreglos de controles Winsock e irlos cargando dinámicamente. Aquí tienes un ejemplo de ello: *http://www.monografias.com/trabajos30/tutorial-visual-basic/tutorial-visual-basic.shtml
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Mira este es un ejemplo rudimentario (imaginemos que se puede mandar eso) Esto en el server: Public i As Integer Public PUERTO As Integer Private Sub Form_Load() PUERTO = 7913 End Sub Private Sub RESPALDO_DataArrival(ByVal bytesTotal As Long) i = i + 1 Load SOCK(i) SOCK(i).LocalPort = PUERTO + i RESPALDO.SendData "Port:" & (PUERTO + i) End Sub
Esto en el cliente: Private Sub WINSOCK1_DataArrival(ByVal bytesTotal As Long) If Mid(entrada, 1, 5) = "Port:" Then Call CORTARCONECCION Call CAMBIARPUERTO End If End Sub
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
grester43hck
Desconectado
Mensajes: 57
|
Gracias por la ayuda a los dos . Cassiani el tutorial que linkeaste esta perfecto muchas gracias. 79137913 tu metodo lo malo que tiene es que si lo e entendido bien el servidor necesita abrir tantos puertos como conexiones valla a tener, eso no es muy practico desde mi punto de vista, pero igualemte gracias
|
|
|
En línea
|
|
|
|
|
|