Esto forma parte del articulo que hice para una ampliación de una asignatura...allà va:
El juego
Introducción
El juego pertenece a la familia de juegos
arcade, como por ejemplo el mítico
Space Invaders. En el juego movemos a nuestro jugador representado como un quadrado y disparamos a nuestro contrincante tratando de adivinar su posición.
La libreria ''FuncionsXarxa.h''
No entraré en detalles sobre la programación del videojuego a nivel de manipulación de sprites entre otras cosas. Solo me gustaria hacer referencia a una pequeña libreria que he hecho. En esta libreria hay una serie de funciones básicas para convertir el juego en un juego multijugador online.
Tampoco explicaré demasiado la estructura interna de estas funciones, ja que entre otras cosas hay llamadas a funciones propias de SDL_net.
La función establirServidor(IPaddress *ip)
Esta función se encarga, tal y como dice su nombre, de crear el servidor. De esta manera conseguimos que otro jugador nos pueda enviar datos. El puntero ip del tipo de datos IPaddress nos servirá para guardar información referente a nuestro servidor.
A continuación abrimos el socket del servidor, utilizando la dirección ip de la máquina asi como el puerto, para poder recibir peticiones de posibles usuarios.
La funcion enviarDades(char *host,char *dades)
La siguiente función envia la cadena de caracteres al host correspondiente. Para poder enviar datos primero tenemos que crear una puerta de comunicación (un socket). Entonces intentamos abrir ese socket en esa dirección, especificando el puerto donde este "escuchando" el servidor (es decir, el puerto donde se ha abierto el socket del servidor). Si es posible comenzamos a enviar la información a través de ese socket. Al finalizar el envio lo cerramos.
La función rebreDades(TCPsocket server,char *message)
Para recibir datos primero tenemos que comprovar que haya alguien que nos quiere enviar. Gracias al socket que hemos abierto en la función "establirServidor" podemos aceptar peticiones. Si decidimos aceptar una petición, tendremos que crear un nuevo sockets para poder recibir los datos. Finalmente estos datos se guardan en la variable message. Observemos como necesitamos dos sockets, uno para "escuchar" peticiones y otro para tratarlas.
Screenshots
Codigo Fuente
Aqui teneis el código fuente

, los comentarios asi como algunos nombres estan en catalán, medio mezclado en castellano jeje, alguna duda ya sabéis:
http://es.foratdecuc.net/david/panyuFont.zip
Ejecutables
Versión Windows:
http://es.foratdecuc.net/david/panyuExe.zip
Nota: Si no tenéis con quien jugar podéis provar el juego vosotros mismos. Debereis indicar que quereis ser el jugador 2 y la dirección de vuestro rival es localhost.
Fuentes
http://www.libsdl.org <- Informació sobre la llibreria SDL
http://es.wikipedia.org/wiki/Socket <- Informació sobre sockets
W. Stallings (2004). Comunicaciones y redes de computadores, 7a Edición. Pearson Prentice Hall.
Bien, eso es todo. No he colgado la parte que explica el modelo de comunaciones TCP/IP asi como una explicación sobre sockets. Si alguien esta muy interesado siempre puede consultar los enlaces que he puesto o preguntar alguna cosa.
P.D. Perdonad los errores ortográficos, he traducido muy deprisa. Saludos!