elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Socket c++ server y navegador web (chrome)...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Socket c++ server y navegador web (chrome)...  (Leído 6,188 veces)
shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Socket c++ server y navegador web (chrome)...
« en: 16 Abril 2012, 23:23 pm »

Hola buenas noches, vengo aqui a solicitar algo de información ya que no encuentro en Internet nada relacionado...

Me meti en el desarrollo de sockets en c++, y consegui conectar el navegador web al server socket, (muy facil...), pero ahora no se como responderle al navegador web y enviarle la informacion necesaria y el html correspondiente, espero que me podais ayudar... ya que esto es un problema demasiado facil y me da verguenza publicar algo tan tonto... xDD


Dejo imagen de la cabecera http y el server...


Gracias.


« Última modificación: 16 Abril 2012, 23:25 pm por shiro51 » En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #1 en: 16 Abril 2012, 23:32 pm »



     Se necesita mas información para poder ayudarte, por lo q veo estas usando Windows, pero que api usas?
     
.... pone un poco de código, algo como para q sepamos donde estas.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms740149%28v=vs.85%29.aspx


En línea

<[(x)]>
shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #2 en: 16 Abril 2012, 23:41 pm »

Este es el codigo completo, apenas lo toque del original, porque estuve comprimiendo el cliente y el server lo he dejado un poco apartado hasta ahora xDDD

Código:
#include <winsock2.h> //la cabezera para usar las funciones de winsock
#include <stdio.h>

#pragma comment(lib,"ws2_32.lib")

int main()
{
   WSADATA wsa;
   SOCKET sock;
   struct sockaddr_in local;
   int len=0;
   char Buffer[1024];
   char HTML[1024] = "<html> <body> Hola como estas?</body></html>";
   //Inicializamos
   WSAStartup(MAKEWORD(2,0),&wsa);
   
   //Creamos el socket
   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

   //defnimos dirección por defecto, ipv4 y el puerto 9999
   local.sin_family = AF_INET;
   local.sin_addr.s_addr = INADDR_ANY;
   local.sin_port = htons(9999);


   //asociamos el socket al puerto
   if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
   {
      printf("error en el bind\n");
      return -1;
   }

   //ponemos el socket a la escucha
   if (listen(sock,1)==-1)
   {
      printf("error en el listen\n");
      return -1;
   }
 
   len=sizeof(struct sockaddr);


   //hay una conexión entrante y la aceptamos
   sock=accept(sock,(sockaddr*)&local,&len);

   while (len!=0) //mientras estemos conectados con el otro pc
   {
  len=recv(sock,Buffer,1023,0); //recibimos los datos que envie

  if (len>0)  //si seguimos conectados
  {
Buffer[len]=0; //le ponemos el final de cadena
puts(Buffer); //imprimimos la cadena recibida
if(strcmp (Buffer,"12412412412Hola\n") == 0)
{
puts("Muy bien!");
send(sock, inet_ntoa(local.sin_addr), strlen(inet_ntoa(local.sin_addr)), 0);
}
send(sock, "HTTP/1.1 200 OK\r\n", strlen("HTTP/1.1 200 OK\r\n"), 0);
send(sock, "Content-Type: text/html\r\n", strlen("Content-Type: text/html\r\n"), 0);
send(sock, "Content-Length: 1024\r\n", strlen("Content-Length: 1024\r\n"), 0);
send(sock, "\r\n", strlen("\r\n"), 0);
send(sock, "<html><body>Hola mundo</body></html>", strlen("<html><body>Hola mundo</body></html>"), 0);
  }
   }

   return 0;
}
En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #3 en: 17 Abril 2012, 00:56 am »


  El código tendría que funcionar...
        lo acabo de probar y funciona bien, querés agregarle mas cosas? no entiendo el problema...

« Última modificación: 17 Abril 2012, 01:00 am por <[(x)]> » En línea

<[(x)]>
shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #4 en: 17 Abril 2012, 08:30 am »

A mi no me funciona, el navegador se conecta me envia su cabecera le envio la mia pero no me muestra el "Hola mundo" en el navegador web...

Quiero que chrome por ejemplo se conecte a mi server y le envie el html y se muestre en el navegador el html que envia mi server...
En línea

shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #5 en: 17 Abril 2012, 16:10 pm »

Mini avance... si le envio lo que me envia el navegador... se queda esperando procesando informacion... he probado mandando lo mismo que el navegador y mandando:

Código:
strncat (HTML, "GET /index.html HTTP/1.1\n", strlen(HTML) + strlen("GET /index.html HTTP/1.1\n"));
   strncat (HTML, "Accept: */*\n", strlen(HTML) + strlen("Accept: */*\n"));
   strncat (HTML, "Accept-Language: es\n", strlen(HTML) + strlen("Accept-Language: es\n"));
   strncat (HTML, "Accept-Encoding: gzip, deflate\n", strlen(HTML) + strlen("Accept-Encoding: gzip, deflate\n"));
   strncat (HTML, "User-Agent: Mozilla/5.0 (compatible; MSIE 5.01;    Windows NT)\n", strlen(HTML) + strlen("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01;    Windows NT)\n"));
   strncat (HTML, "Host: 127.0.0.1n", strlen(HTML) + strlen("Host: 127.0.0.1\n"));
   strncat (HTML, "Connection: Keep-Aliven\n", strlen(HTML) + strlen("Connection: Keep-Aliven\n"));


Pero falta algo...

Código:
#include <winsock2.h> //la cabezera para usar las funciones de winsock
#include <stdio.h>

#pragma comment(lib,"ws2_32.lib")

int main()
{
   WSADATA wsa;
   SOCKET sock;
   struct sockaddr_in local;
   int len=0;
   char Buffer[1024];
   char HTML[1024] = "";
   //strncat (HTML, "GET /index.html HTTP/1.1\r\n", strlen(HTML) + strlen("GET /index.html HTTP/1.1\r\n\n"));
   //strncat (HTML, "Accept: */*\r\n", strlen(HTML) + strlen("Accept: */*\r\n"));
   //strncat (HTML, "Accept-Language: es\r\n", strlen(HTML) + strlen("Accept-Language: es\r\n"));
   //strncat (HTML, "Accept-Encoding: gzip, deflate\r\n", strlen(HTML) + strlen("Accept-Encoding: gzip, deflate\r\n"));
   //strncat (HTML, "User-Agent: Mozilla/5.0 (compatible; MSIE 5.01;    Windows NT)\r\n", strlen(HTML) + strlen("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01;    Windows NT)\r\n"));
   //strncat (HTML, "Host: 127.0.0.1\r\n", strlen(HTML) + strlen("Host: 127.0.0.1\r\n"));
   //strncat (HTML, "Connection: Keep-Aliven\r\n\r\n\n", strlen(HTML) + strlen("Connection: Keep-Aliven\r\n\r\n"));
   //strncat (HTML, "<html><body>Hola mundo</body></html>", strlen(HTML) + strlen("<html><body>Hola mundo</body></html>"));
strncat (HTML, "HTTP/1.1 200 OK\r\n", strlen(HTML) + strlen("HTTP/1.1 200 OK\r\n"));
   strncat (HTML, "GET /index.html HTTP/1.1\r\n", strlen(HTML) + strlen("GET /index.html HTTP/1.1\r\n\n"));
   strncat (HTML, "Accept: */*\r\n", strlen(HTML) + strlen("Accept: */*\r\n"));
   strncat (HTML, "Cache-Agent: max-age=0\r\n", strlen(HTML) + strlen("Cache-Agent: max-age=0\r\n"));
   strncat (HTML, "Accept-Language: es-ES\r\n", strlen(HTML) + strlen("Accept-Language: es\r\n"));
   strncat (HTML, "Accept-Encoding: gzip, deflate\r\n", strlen(HTML) + strlen("Accept-Encoding: gzip, deflate\r\n"));
   strncat (HTML, "User-Agent: Mozilla/5.0 (compatible; MSIE 5.01;    Windows NT)\r\n", strlen(HTML) + strlen("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01;    Windows NT)\r\n"));
   strncat (HTML, "Host: 127.0.0.1\r\n", strlen(HTML) + strlen("Host: 127.0.0.1\r\n"));
   strncat (HTML, "Connection: Keep-Aliven\r\n", strlen(HTML) + strlen("Connection: Keep-Aliven\r\n"));
strncat (HTML, "Content-Type: text/html\r\n\r\n", strlen(HTML) + strlen("Content-Type: text/html\r\n\r\n"));
   
   int num = 0;
   //Inicializamos
   WSAStartup(MAKEWORD(2,0),&wsa);
   
   //Creamos el socket
   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

   //defnimos dirección por defecto, ipv4 y el puerto 9999
   local.sin_family = AF_INET;
   local.sin_addr.s_addr = INADDR_ANY;
   local.sin_port = htons(9999);


   //asociamos el socket al puerto
   if (bind(sock, (SOCKADDR*) &local, sizeof(local))==-1)
   {
      printf("error en el bind\n");
      return -1;
   }

   //ponemos el socket a la escucha
   if (listen(sock,1)==-1)
   {
      printf("error en el listen\n");
      return -1;
   }
 
   len=sizeof(struct sockaddr);


   //hay una conexión entrante y la aceptamos
   sock=accept(sock,(sockaddr*)&local,&len);
   while(len >= -1)
   {
  len=recv(sock,Buffer,1023,0); //recibimos los datos que envie

  if (len>0)  //si seguimos conectados
  {
Buffer[len]=0; //le ponemos el final de cadena
puts(Buffer); //imprimimos la cadena recibida
send(sock, HTML, strlen(HTML), 0);
send(sock, "<html><body>Hola mundo</body></html>", strlen("<html><body>Hola mundo</body></html>"), 0);
puts(HTML);
if(strcmp (Buffer,"12412412412Hola\n") == 0)
{
puts("Muy bien!");
send(sock, inet_ntoa(local.sin_addr), strlen(inet_ntoa(local.sin_addr)), 0);
}
  }
   }

   return 0;
}
« Última modificación: 17 Abril 2012, 16:53 pm por shiro51 » En línea

shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Socket c++ server y navegador web (chrome)...
« Respuesta #6 en: 18 Abril 2012, 14:51 pm »

Código:
#include <iostream> //pause...
#include <stdio.h> //gets printf...
#include <string.h> //if
#include <time.h>
#include <process.h>

#include <winsock2.h> //sockets
#pragma comment(lib,"ws2_32.lib")
SOCKET sock;
char Buffer[1024];
char HTML[1024];

void wait ( int seconds )
{
  clock_t endwait;
  endwait = clock () + seconds * CLOCKS_PER_SEC ;
  while (clock() < endwait) {}
}

void thread(void *arg)
{

}

int main()
{
WSADATA wsa;

struct sockaddr_in direc;
int conex;

int len = 0;

strncat (HTML, "GET /index.php HTTP/1.1 \r\n", strlen("GET /index.html HTTP/1.1 \r\n"));
strncat (HTML, "Host: elhacker.net:80\r\n", strlen("Host: elhacker.net:80\r\n"));
strncat (HTML, "Connection: keep-alive\r\n", strlen("Connection: keep-alive\r\n"));
strncat (HTML, "User-Agent: Mozilla/5.0 <Windows NT 6.1> AppleWebKit/535.19 <KHTML, Like Gecko>\r\n", strlen("User-Agent: Mozilla/5.0 <Windows NT 6.1> AppleWebKit/535.19 <KHTML, Like Gecko>\r\n"));
strncat (HTML, "Chrome/18.0.1025.162 Safari/535.19\r\n", strlen("Chrome/18.0.1025.162 Safari/535.19\r\n"));
strncat (HTML, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n", strlen("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"));
strncat (HTML, "Accept-Encoding: gzip,deflate,sdch\r\n", strlen("Accept-Encoding: gzip,deflate,sdch\r\n"));
strncat (HTML, "Accept-Language: es-ES,es;q=0.8\r\n", strlen("Accept-Language: es-ES,es;q=0.8\r\n"));
strncat (HTML, "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n", strlen("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n"));


WSAStartup(MAKEWORD(2,2),&wsa);

direc.sin_family=AF_INET;
direc.sin_port=htons(80);
direc.sin_addr = *((struct in_addr *)gethostbyname("46.105.119.93")->h_addr);
memset(direc.sin_zero,0,8);


if ((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
{
printf("Error al crear el socket");
return -1;
}

if ((conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)))==-1)
{
      printf("No se ha podido conectar\n");
  fgets(Buffer,1023, stdin);
      return -1;
    }else{
puts("conexion establecida...");

//_beginthread(thread, 5, 0); 
}



while (len!=-1)
   {

puts(HTML);
send(sock, HTML, strlen(HTML), 0);
recv(sock,Buffer,1023,0);
puts(Buffer);

system("pause");
return 0;
   }

return 0;
}

Con este envio una cabecera como si fuera el navegador a un server de internet, y espero su cabecera http para saber como debe ser la mia, pero el problema es que "imitando" a chrome con la cabecera que el me manda, me dice 400 bad request, request header field is missing ":"

A ver si me podeis decir el problema...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Actualización para el navegador Google Chrome
Noticias
wolfbcn 0 1,435 Último mensaje 30 Abril 2010, 13:39 pm
por wolfbcn
Baidu lanza un navegador muy similar a Chrome
Noticias
wolfbcn 0 1,519 Último mensaje 21 Julio 2011, 13:19 pm
por wolfbcn
Chrome 16 ya es el navegador más usado en el mundo
Noticias
wolfbcn 2 2,285 Último mensaje 11 Marzo 2012, 22:52 pm
por Stoya
problema server socket thread
Java
momo1234 1 3,018 Último mensaje 12 Mayo 2012, 17:20 pm
por momo1234
¿Se ha ralentizado el navegador Chrome?
Noticias
wolfbcn 3 2,210 Último mensaje 13 Noviembre 2012, 00:54 am
por Martin-Ph03n1X
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines