Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - undol

#1
General / Las universidades estan atrasadas
01 de Enero de 1970, 01:00:00 AM
                                Mira ahora que he acabado los examenes puedo relatar mis experiencias en la  Universidad

Quizá en alguna cosa tenga razón, pero lo que tienes que tener claro es que en la universidad te enseñan a estructurar la mente, con eso quiero decir que me he pasado toda la fase de selección , los primeros 66 creditos .. con temarios tan diversos como derivación formal de algoritmia, teoría inductiva, física,calculo,teoria de grafos, etc ... a esos si mucho ensamblador

Con esto quiero decir que realmente eres tu el que tiene que marcar donde quieres llegar, la universidad solamente intenta formarte para que tu puedas ser autosuficiente en las materias que tu decidas

Bueno siempre hay un poco de tópico en todo esto !!!

Saludos
                               
#2
                                Nadie se acuerda de konqueror o nautilus ! bueno quiza IE sea el navegador mas extendido en las plataformas WIN32 pero en las otras plataformas (donde muchas de ellas acumulan muchos mas años de trabajo) IE simplemente no existe !

Quiza esta no sea la discusion o eje central,quiza el tema este en que aqui alguien juega con ventaja , y este es M$ ... si las rutinas del software de navegacion mas pesadas se cargan al iniciar el sistema Netscape no tiene mucho que hacer ... busquemos una plataforma donde todos parten con los mismos recursos, por ejemplo GNU/Linux, en este caso solo existe un perdedor IE y no existe ganador

Saludos
                               
#3
Programación gráfica / Cositas de las D3D
01 de Enero de 1970, 01:00:00 AM
                                Creo que BeRSeRKeR puede tener razón, recuerdo muy bien los primeros problemas que tuve en el momento de renderizar triangulos, Bueno solamente escribo esto para que te asegures que realmente todos se encuentran definidos en el mismo sentido

Saludos                                
#4
                                Pues muy facil por ejemplo:

Tienes el server A que es el que mantiene la lista de servidores activos

1) Un cliente B es potencialmente un nuevo
servidor de juegos, pues:

Envia un paquete UPD o TCP al serve A con su ip por ejemplo

El serer A lo atiende y coje esa direccion IP y lo pone en su tabla de servidores activos (por ejemplo SQL)

2) Un cliente C potencialmente un jugador, quiere saber que servidores se encuentran activos , le pregunta a A !!

A le responde con la lista de la tabla !!!

Entonces C decide donde quiere ir, y puede consultar directamente información a las ip de la lista (numero de jugadores en el server,estado del juego ...)


3) A no tiene claro si su lista esta muy actualizada, manda un paquete TCP o UDP para todos los servers que tiene activos (al tanto con un ataque DOS a tu mismo) y si responde los deja en la lista sino es el caso los saca

4) El cliente B esta harto de que otros le chupen el amplio de banda de su modem de 56 k y decide cortar por lo sano, manda un msg al serve A

Esto podría ser una "aproximación" a la dialéctica para manterner de forma mas o menos correcto la lista de servidores activos


[ Este Mensaje fue editado por: undol el 2002-05-16 12:37 ]                                
#5
                                Bueno esto ya es un poco mas complicado .. primero de todo a grandes rasgos te hace falta un servidor principal o varios que nunca esten caidos para que como mínimo el cliente pueda encontrar una primera ruta , importante que si registras este servicio en algun server de internet las direcciones que distribuias a los clientes sean nombres, ya que si algun día cambia la ip de tu server o servers principales vas a tener problemas !!!! o sea que estate al loro !!!

A parte de todo esto también tendras que montarte como dicen por arriba una lista on-line de los servers activos .... etc etc etc

Todo esto lo puedes montar bajo GNU/Linux quizà sea la plataforma mas indicada entre otras cosas pq puedes encontrar el código fuente de un servidor de IRC que en este caso es un patron de solución a tu problema

Saludos
                               
#6
                                Bueno esto es lo que devuelve google, te lo detalle

Programacion de sockets
http://www.ecst.csuchico.edu/~beej/guide/net/html/

Tutorial de TCP/IP
http://www.sangoma.com/fguide.htm


Entre otros muchos , busca en google
                               
#7
                                Bueno te oriento un poco :

En el momento que tu pides hacer una conexión con un server por ejemplo de quake (podría ser perfectamente de irc,ftp,etc ..)
lo que hace tu computadora es abrir una conexión socket con el puerto por ejemplo en caso de irc 6666 de la computador irc.hispano.org, a nivel un poco mas bajo de la capa OSI el sistema operativo o el entramado tcp/ip es lo siguiente:

Sistema Operativo
------------------
1. Bueno esta conexión es para la ip 212.34.55.66
2. Miro la politica de rutas
  He encontrado un par que dicen lo siguiente:

0.0.0.0          0.0.0.0     192.168.0.34

3. Ok inicio la conexión con los paquetes con
una marca que dice que tiene que passar por la ip 192.168.0.34 (direccion de mi adsl/interno)

Hub
----
1. El hub como cocentrado y totno que es lo envia a todos los ordenadores, si fuera un switch sería lo suficientemente inteligente como para saber que esa ip la tiene una maquina determinada

Los otros
----------
1. Los otros ordendores reciben los paquetes pero simplemente pasan de ellos

El router
----------
El router recibe el paquete , entonces empieza aqui otro tema pero ten en cuenta que existen varios tipos de enrutado, tuneles ip (mete un paquete ip dentro otro paquete ip), mantener tablas, etc ...

En difinitiva lo que hace el router entonces
es mandar el paquete (con su IP) a otros routers (en general de tu ISP->TELEFONICA<-servidor de IRC)


Este es el caminio de ida, el de vuelta ya te lo puedes imaginar, lo mismo pero esta vez el router recibira el paquete de vuelta con la ip del servidor de IRC, tu router sabrá que la conexión inicialmente la habia empezado una maquina con la ip 192.168.0.23 (la tuya por ejemplo) y te devolverá la información


Bueno esto es a grandes rasgos un poco como funciona la conexion TCP/IP entre dos ordenadores, pero para ti esto tiene que ser totalmente transparente, no te preocupes .... a no ser que el server lo montes detras de un router , entonces tendras que hacer alguna cosa para poder realizar el enrutado de paquetes desde la conexión externa hacia la interna ... pero eso con linux es muy facil y funciona mejor que en un router ......

Saludos
3.

                               
#8
                                Buneo por lo que veo o creo ver es que tiens un aparato como el router de 3Com que actua de HUB y de router ADSL ... bueno imaginate que yo envio un ping a la direccion 80.xx.xx.xx que es la direccion de mi ADSL, como podras entender el que va a recibir este paquete va a ser la ADSl y solamente la respondera tu ADSL (a no ser que tenga redirigidos los paquetes icmp hacia la red interna ), ni que tus ordenadores recibieran ese paquete por culpa del HUB (tendriamos que ver que arquitectura tiene ese super-cable para saber que va hacer con los paquetes de información )nunca responderan a ellas al no tratarse de un envio a la broadcast (bueno podría ser que sí en determinados casos) a no ser que te montes un sniffer y pongas la tarjeta de red en modo promiscuo y se quede con todos los paquetes !!! pero como he comentado anteriormente seguiríamos sin saber si realmente el  "HUB" realmente actua como un HUB en esta situación


Solamente decirte que lo habitual en todos los casos es montar un enrutador , pudiera ser que super-cable ya te haya dado un router como el 312 ADSL de Telefónica ( tendrías que buscar información en internet i detallar como estan interconectados los ordenadores hacia ese aparato). Si no es un enrutador pues te puedes pillarte "LINUX" que es gratuito y lo montas encima de un viejo ordenador, con ello podras hacer lo que quieras!!!!!

Saludos

                               
#9
Programación en red / Por que UDP ?
01 de Enero de 1970, 01:00:00 AM
                                Entiendo vuestras peocupaciones , y veo ciertas ventajas quen el protocolo UDP, pero lo de matar moscas a cañonazos es un poco exagerado, creo conveniente recordar que si lo que acabas haciendo es un control del protocolo UDP es como reinventar TCP,y me parece que los estudiantes de Berkley ya realizaron una buena faena con el tema.

En un entorno como hostil como internet si que utilizaría UDP pero en una Lan creo que me decantaría por TCP.

Tengo que reconocer que solamente he programado de forma real en entornos TCP, quizá me falte realizar lo mismo con UDP para encontrar vuestras preocupaciones

Saludos
                               
#10
Programación en red / Por que UDP ?
01 de Enero de 1970, 01:00:00 AM
                                Puedes detallar un poco mas el tema, no acabo de pillar el tema del fiable no fiable,en que estados se da la situacion y como responde ! etc !!
                               
#11
Programación en red / Por que UDP ?
01 de Enero de 1970, 01:00:00 AM
                                Bueno respeto a este tema una cosa, comentas que UDP se utiliza por su rapidez en las redes LAN, bueno esto quizá sería en las redes de 10/MBits, actualmente todas las redes són como mínimo de 100 MBits tendiendo al Giga , con eso quiero decir que TCP tiene que tendir a ser un protocolo viable para el intercambio rápido de datos en una red de area local

Saludos

_________________
Saludos --{Undol}--

[ Este Mensaje fue editado por: undol el 2002-05-12 23:58 ]                                
#12
                                Leiendo un poco todas las respuestas me surje una "duda".
Teneis algun inconveniente con los ficheros binarios?
Los ficheros binarios se pueden leer y estructurar de forma correcta y en el caso de guardar cierta información son mucho mas interesantes que los ficheros en formato texto !

Bueno nada mas, un comentario como otro !

Saludos
                               
#13
Programación en red / Juegos Multiplayer
01 de Enero de 1970, 01:00:00 AM
                                Vale vale TCP tendrá sus "defectillos" pero lo que esta claro es que alguno de ellos son totalmente superables con una buena programación, supongo que ha nadie se le ocurriria llamar a una llamada bloquente en el thread principal, pues eso es lo mismo .. los recv and send son bloqueantes hasta que el recptor no se da por enterado, pero superar esa trivialidad es tan facil como implementar todo el tema de red en un nuevo thread con los "TIME" correspondientes

Saludos
                               
#14
Programación en red / Juegos Multiplayer
01 de Enero de 1970, 01:00:00 AM
                                Fijate que en los comentarios ya pone que la conexión está orientada a TCP ... por lo que refiere al bind y al connect fijate que una parte es la del server y la otra la del cliente ... pero creo que algo de razon tienes, pq :

El connect que realiza el cliente tb tiene que habrir un socket para recibir los paquetes del server, y acaba realizando un bind un poco transparente para el programador

Saludos                                
#15
Programación en red / Juegos Multiplayer
01 de Enero de 1970, 01:00:00 AM
                                Perdona por no haber contestado antes pero estoy sin conexión a Internet desde casa

A ver vamos paso por paso:

1) El contexto INADDR_ANY se utiliza para promocionar la conexión al server desde qualquier dirección de internet, o sea ser gracias a ello le estamos diciendo que al servicio se pueden conectar desde 0.0.0.0/32 ip diferentes ( o sea todas)

2) Entiendo que la conexión que estas procurando entre el server y el cliente no deja de ser entre la misma máquina . Es eso verdad ? si es de esa manera entiendo que puede ser que te estes equivocando de direccion IP , en la maquina que tienes el server ( que supongo que es la misma que el cliente ) ejecuta el ipconfig famoso o el winipcfg para ver la ip real !!


3) No nunca debes usar el bind en la parte cliente, el bind se utiliza para enlazar un puerto determinado con el conector (socket)


4) De pasada adjunto codigo de un cliente en linux
//open socket STREAM (TCP)
  if((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)
  {
      printf("Error to open socket conectionrn");
      exit(-1);
  }
  //connect to server
  if (connect_server(sfd,ser_addr,argv[1])==FALSE)
  {
     printf("Not resolv this conection with : %srn",argv[1]);
     close(sfd);
     exit(-1);
  }

//funcion connect_server
int connect_server(int f_sfd,struct sockaddr_in f_ser_addr,char *server)
{
  struct hostent * host_st; //for resolv IP

  if((host_st=gethostbyname(server))==NULL)
      return 1;

  f_ser_addr.sin_family=AF_INET;
  f_ser_addr.sin_addr.s_addr=*(long *)host_st->h_addr;
  f_ser_addr.sin_port=htons(PORT_WWW);
  printf("Conecting to : %srn",server);
  if (connect(f_sfd,&f_ser_addr,sizeof(f_ser_addr))==-1)
  {
      return 1;
  }
  return 0;
}


5) Codigo de un server en windows
result=WSAStartup(0x0101,&ws);

//.....................inicio del listen in 32333
sfd=socket(AF_INET,SOCK_STREAM,0);  //iniciamos el socket
if (sfd==INVALID_SOCKET)
    Actiu=false;

s_sock.sin_family=AF_INET;          //tipo internet
s_sock.sin_port= htons(80);      //puerto
s_sock.sin_addr.s_addr=INADDR_ANY;//cualquier dirección
if((bind(sfd,(struct sockaddr *) &s_sock,sizeof(s_sock)))==-1)
    Actiu=false;

if(listen(sfd,100)==-1) //el proceso ya puede escuchar
    Actiu=false;



                               





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.