Newsgroup: it.comp.programmare.win32
Titolo: Leggere una pagina html (per tutti tranne zello)

Vorrei creare un programmino che permetta di leggere il codice sorgente
(html) della pagina iniziale di un qualunque sito.
Vi incollo ciò che ho realizzato dicendovi che funziona solo in pochissimi
siti (1 su 10 o meno). Probabilmente sarà una questione di reindirizzamento
del provider o altro, non riesco ad andare avanti.
Avete qualche suggerimento?
Grazie come sempre per la vostra gentilezza e scusate per il codice
schifoso (ho ripreso da 3 giorni il c dopo 12 anni).
Bye
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
//**********1*********
  SOCKET miosock;
  SOCKADDR_IN miosock_addr;
//**********1*********
  char *hostname;
  struct hostent *myhost;
  int i = 0, count = 0;
  WORD p;
  WSADATA data;
  int err;
  if (argc < 2)
  {  printf("Usa: ascolta [host] \n");
     exit(-1);
  }
  p = MAKEWORD(1, 0);
  err = WSAStartup( p, &data );
  if(0 != err) return 1;
  hostname = (char *)malloc(40);
  strcpy(hostname, argv[1]);
  myhost = gethostbyname(hostname);
  if(NULL == myhost)
   {  int ppp = 0;
      ppp = WSAGetLastError();
      if(WSANOTINITIALISED == ppp) printf("WSA non inizializzata\n");
   }
   count=0;
//*********2********
    miosock=socket(PF_INET,SOCK_STREAM,0);
    miosock_addr.sin_family=PF_INET;
    miosock_addr.sin_port=htons(80);
//*********2********
   printf("\nQuesto è il numero IP:");
   while(myhost->h_addr_list[count])
    {
      printf("   %u.%u.%u.%u \n",
     (unsigned char) myhost->h_addr_list[count][0],
     (unsigned char) myhost->h_addr_list[count][1],
     (unsigned char) myhost->h_addr_list[count][2],
     (unsigned char) myhost->h_addr_list[count][3]);
//*********3********
     miosock_addr.sin_addr.S_un.S_un_b.s_b1=(unsigned char)
myhost->h_addr_list[count][0];
     miosock_addr.sin_addr.S_un.S_un_b.s_b2=(unsigned char)
myhost->h_addr_list[count][1];
     miosock_addr.sin_addr.S_un.S_un_b.s_b3=(unsigned char)
myhost->h_addr_list[count][2];
     miosock_addr.sin_addr.S_un.S_un_b.s_b4=(unsigned char)
myhost->h_addr_list[count][3];
//*********3********
     count++;
    }
   int lun=sizeof(struct sockaddr);
   err=connect(miosock,(struct sockaddr*)&miosock_addr,lun);
   char mess[10000];
   int r=0;
   r=send(miosock,"GET /\n",7,0);
   int n=0;
   n=recv(miosock,mess,20000,0);
   mess[n]=0;
   printf(mess);
   WSACleanup();
   closesocket(miosock);
   return 0;
}

   n=recv(miosock,mess,20000,0);
   Guarda che zello lo diceva nel tuo interesse.
   Comunque il tuo problema e` legato a HTTP: "GET /\r\n\r\n" e` il
formato piu` corretto, ma dovrebbe andar bene anche "GET /\n\n",
meglio "GET / HTTP/1.1\r\nHost: nomehost\r\n\r\n", per i server che
fanno multihosting. Poi potresti specificare Accept-Language per i
siti con contenuto in piu` lingue, ecc. Guarda questo:
http://www.w3.org/Protocols/rfc2616/rfc2616.txt
-- 
S.L.

comunque su zello ovviamente stavo scherzando.
Grazie della risposta
"S.L." <no.a...@by.email> ha scritto nel messaggio
news:p2pv9vsnahk8c13ch...@4ax.com...



Poi se vuoi complicarti la vita o vuoi slegarti da IE continua pure con
le sockets. ^^;
-- 
-=[]=---iAN CooG---=[]=-
Puozzapassanuuajetuekilluskurnakkiatkatambarataskrivassamaneremmerda.


-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.1. C, C++ and ASM developers
                               and beta testers are welcome!