Autor
|
Tema: CHAT en VB (Leído 2,159 veces)
|
LGAR
Desconectado
Mensajes: 21
|
bueeno.. en primer lugar me presento soy Luis, de Guatemala... tengo 16 años y ando por aqui de autodidacta... hace rato q andaba viendo este foro y me registre y naaa q aqui toy .... ... ahora, yendo algrano.... estoy haciendo un "chat" para funcionar en una lan.... ya aprendi a usar masomenos el winsock y eso... pero ahora stoy pensando en el sistema q voy a utilizar para tener varias conversaciones y eso, y claro esta lo normal q seria crear un servidor y q todos se conecten y el servidor lo haga todo, pero no quisiera q se hiciera asi por varias razones....... .. el punto es q se me ocurrio q talvez se podria de máquina a maquina, individualmente, y en protocolo UDP pa q no haya servidor ni cliente, sino q las maquinas esten en el mismo "nivel", pero me doy cuenta de un gran problema, como esta el localport y el remoteport, entonces x ejemplo dos maquinas q se conectan tendrian los "puertos cruzados", es decir, la entrada de una seria la salida de la otra y viceversa ¿o no?.. y por lo tanto, no se podria hacer q el programa escuche en determinado puerto y mande info a otro determinado puerto..... y ademas creo q nose puede hacer q mas de una aplicación este usando el mismo puerto o si ? ... en fin... espero ideas para poder hacer esto sin tener q crear un servidor.... .,,, un saludo
|
|
« Última modificación: 4 Mayo 2006, 05:45 am por LGAR »
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
Maxo... me lo e leido 3 veces y no mee empanao de nada, explicalo mejor. Ideas claras y concisas. Salu2
|
|
|
En línea
|
|
|
|
SeroS
Desconectado
Mensajes: 31
|
Mira si entiendo bien lo que queres hacer, la forma que se me ocurre es: **El Programa van a ser clientes y servidores a la ves ya que el programa va a tener 2 winsock, uno para mensajes entrantes y uno para mensajes salientes, estos winsock van a usar distinto puerto. **Cada usuario va a ser identificado por su ip, despues si queres hacete un sistema de nicks que no es dificil. **El winsock para los mensajes entrantes siempre esta a en Listen. entoces cuando vos mandas un mensaje lo que pasaria seria esto al apretar el boton de enviar... Codigo Para enviar Dim mensaje As String Dim ips(20) As String ' En este vector vas a guardar las ips de las personas con las que estas hablando
Private Sub Command1_Click() mensaje = Trim(text1.Text) 'Al enviar el mensaje seteas el WS_eviar para que se likee al ws_recivir de el receptor ws_enviar.RemoteHost = ips(0) ws_enviar.Connect ws_enviar.SendData (mesaje) ws_enviar.Close ' Lo vuelvo a cerrar y ya esta listo para enviar mensajes a quien vos quieras... End Sub
Y listo solo te queda hacer que cuando te llegue el connection request , conectes recibas el paquete (mensaje), cierres el ws_recibir y lo pongas en listen de vuelta, Calculo que con eso funcionaria. EDIT: el codigo no lo probe lo escribi asi nomas para que entiendas mi idea, solo te faltaria agregarle al paquete de mensaje un identificador para indentificar de quien es dicho mensaje y ponerlo en distintos text... Saludos y espero que te sirva =)
|
|
|
En línea
|
Life is one long insane trip. Some people just have better directions.
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
Hay surgen muchos problemas... 1. Si estas ablando con varias personas tenes k estar cerrando el winsock y abrindole y cerrandole todo el tiempo y eso te va a dar problemas. 2. Con usar un solo winsock para enviar y recibir datos te bastaria.(en todo caso pondria uno a parte pra la transferencia de archivos y que asi mientras se envia el archivo puedas seguir ablando) 3. La diferencia entre el protocolo UPD y TCP es k el TCP comprueba que los datos an llegado, por eso es mas adecuado para este tipo de progamas. 4. SI se puede conectar con varias maquinas por el mismo puerto SI lo explicas un poco mejor te pongo code. Salu2
|
|
|
En línea
|
|
|
|
SeroS
Desconectado
Mensajes: 31
|
Hay surgen muchos problemas... 1. Si estas ablando con varias personas tenes k estar cerrando el winsock y abrindole y cerrandole todo el tiempo y eso te va a dar problemas.
No Sabia que podia llegar a traer problemas, pense que no era una manera limpia de hacerlo pero que funcionaba, Gracias por el dato =)... Hay surgen muchos problemas... 4. SI se puede conectar con varias maquinas por el mismo puerto Haber si entiendo, si yo tengo 3 usuarios A , B , C. El usuario A empieza una conversacion con el usuario B (Tomando como que el winsock del usuario A es el que envia el request ), despues un usuario C puede realizar una connecion con cualquier usuario, usando 1 solo winsock por aplicacion y siempre el mismo puerto, si es asi me explicarias como.... Saludos =)
|
|
|
En línea
|
Life is one long insane trip. Some people just have better directions.
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
CUando LGAR diga exactamente lo que quiere hacer me pongo a codear todo de una vez...
|
|
|
En línea
|
|
|
|
LGAR
Desconectado
Mensajes: 21
|
hmmm veamos, ideas claras y concisas eh...... ok, basicamente quiero crear un solo programa, para todas las compus, q no haya tal cosa de servidor, y entonces cualquier maquina se podria conectar a cualquier máquina...... mmm ok ahora q volvi a revisar la informacion del winsock ya descarte el protocolo UDP .... bueno, lo del protocolo UDP ya no ....... pero todavia no estoy seguro de cómo hacerle para tener varias conversaciones...también tendria q ser capaz de solicitar conexiones, asi como de aceptar conexiones, todo esto se puede hacer con un puerto y un solo winsock???
|
|
|
En línea
|
|
|
|
LGAR
Desconectado
Mensajes: 21
|
bueeno ... he ido avanzando por mi cuenta y me he decidido por hacerlo con servidor... habrá un solo ejecutable incluso para el servidor, si es servidor lo dira un archivo de configuracion... cada programa tiene 2 winsocks, uno q se conecta al "nodo" superior, y otro q esta a la escucha para aceptar hasta 6 conexiones...esto es para q no se sature el servidor, ya q las computadoras no son de lo mejor.... cada cliente se conecta al servidor y el servidor lo ubica donde haya espacio...en el servidor, el winsock usado para el nodo superior, sera usado para aceptar una conexión, q otro programa que se conecte a ese winsock complete las tareas del servidor......... luego posteo el codigo q llevo ....
|
|
|
En línea
|
|
|
|
|
|