¡Primera prueba del codigo con buenos resultados!
Hoy al fin consegui enviar una cabecera HTTP correcta y recibir respuesta. Al enviar la cabecera para pedir la pagina de google recivi esto:
- Código: Seleccionar todo
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Thu, 19 Mar 2009 16:02:18 GMT
Expires: -1
Content-Type: text/html; charset=ISO-8859-1
Server: gws
Transfer-Encoding: chunked
197a
<html><head><meta><title>Google</title><script>window.google={kEI:"imzCSYChHoW7jAfniuWhCw",kEXPI:"17259",kHL:"en"};
window.google.sn="webhp";window.google.timers={load:{t:{start:(new Date).getTime()}}};try{window.google.pt=window.gtbExternal&&window.gtbExternal.pageT()||window.external&&window.external.pageT}catch(b){}
window.google.jsrt_kill=1;
var _gjwl=location;function _gjuc(){var a=_gjwl.hash;if(a.indexOf("&q=")>0||a.indexOf("#q=")>=0){a=a.substring(1);if(a.indexOf("#")==-1){for(var c=0;c<a.length;){var d=c;if(a.charAt(d)=="&")++d;var b=a.indexOf("&",d);if(b==-1)b=a.length;var e=a.substring(d,b);if(e.indexOf("fp=")==0){a=a.substring(0,c)+a.substring(b,a.length);b=c}else if(e=="cad=h")return 0;c=b}_gjwl.href="search?"+a+"&cad=h";return 1}}return 0}function _gjp(){!(window._gjwl.hash&&window._gjuc())&&setTimeout(_gjp,500)};
window._gjp && _gjp();</script><style>body,td,a,p,.h{font-family:arial,sans-serif}.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}#gbar{height:22px;padding-left:2px}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbi,#
Y los que conozcais el XHTML (o el HTML) ya os habreis dado cuenta de que es la pagina de google, por lo que he conseguido conectarme al servidor de google, lo unico que no termino de entender es por que cada vez que ejecuto el programa para probar el codigo me dice que la IP de google es una diferente. Probe a hacer ping a google.es varias veces y en cada vez que ejecuto ping me da tambien una IP distinta por lo que supongo que la funcion que se encarga de transformar el host en una IP debe de estar bien. En cuanto a la funcion de DNS para IPv6 por el momento solo puedo suponer que el servidor de google no esta trabajando con IPv6 por el momento ya que al compilar no recivo errores y la he echo siguiendo distintas referencias que he ido encontrando por la web pero al intentar ver la IPv6 del google el programa me muestra diferentes cosas (al iguar que me aparece cada vez con diferente IPv4) como /チ�� y como no se de ningun servidor HTTP que ya este trabajando con IPv6 pues no puedo poner a prueba las funciones para IPv6.
Os informare segun avance el codigo de la libreria que estoi escribiendo. Ahora que ya se que por lo menos las funciones para IPv4 funcionan puedo continuar programando mas funciones, y ya encontrare la forma de probar las funciones de IPv6, ¿alguien sabe de algun servidor web que trabaje con IPv6?, estoi pensando de hacer una funcion para DNS independiente de si es IPv6 o IPv4 que primero intente obtener la IPv6 y si no lo consigue (por que el servidor trabaje solo con IPv4 y no admita trabajar con IPv6) lo intente con la funcion de IPv4.
Si sabeis de algun tutorial sobre sockets en C con IPv6 aun estoi interesado para poder comprobar si el codigo que tengo por ahora para IPv6 en principio estaria bien, o si esta mal. Si teneis suugerencias para la libreria son bien recividas, por el momento estoi pensando en lo que ya he comentado de hacer una funcion DNS tanto para IPv6 como para IPv4 y si consiguiese unir las funciones de conectar, desconectar, enviar datos y recivirlos pues tambien estaria bien, añadir funciones para los sockets UDP (por ahora solo tengo las funciones para los sockets TCP) y añadir funciones para poder funcionar como servidor y algo de hilos para atender a varios clientes a la vez y alguna forma de evitar los bloqueos de las funciones que tienen esta caracteristica.
EDITO:
Hola, ya tengo todas las funciones necesarias para usar sockets TCP/IPv4, TCP/IPv6, UDP/IPv4, UDP/IPv6, DNS IPv4, DNS IPv6 y conjuntos de sockets para no quedarse bloqueado en las funciones de recepcion de datos, ahora estoi intentando añadir sockets raw pero por lo que he estado mirando por diversos resultados de google no me queda del todo claro el trabajo con este tipo de sockets ¿sabeis algo de estos sockets o de algun manual o tutorial?