c-cko socket(), HTTP, POST poziadavok

www www na inmail.sk
Neděle Únor 3 14:02:12 CET 2002


> Chcem si vyskusat ako pracuje HTTP prehliadac.
> Nainstalovanu mam distribuciu RH 6.2.
> Web-server Apache a PHP.
> Napisal som jednoduche skripty index.php3 a odpoved.php3 :
>
> =======index.php3===============
> <html>
> <FORM ACTION="odpoved.php3" METHOD=POST>
> Meno:<INPUT TYPE=TEXT name=meno>
> </FORM>
> </html>
> =============================
>
> =======odpoved.php3============
> <html>
> Ty si <? echo $meno ?>
> </html>
> =============================
>
> Vytvoril som program v c-cku...
> =======skuska.c================
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/param.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <netdb.h>
> #include <stdarg.h>
>
> #define PORT  80
>
> main()
> {
>   int sock;
>   char odoslat[100];
>   char server[100];
>   char prijem[600];
>   char buf[1024];
>
>   struct sockaddr_in sin;
>   struct hostent *hp;
>
>   strcpy(server, "localhost");
>   hp = gethostbyname(server);
>   if (hp==NULL) {
>     printf("Unknown host: %s\n",server);
>     exit(0);
>   }
>
>   bzero((char*) &sin, sizeof(sin));
>   bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
>   sin.sin_family = hp->h_addrtype;
>   sin.sin_port = htons(PORT);
>   sock = socket(AF_INET, SOCK_STREAM, 0);
>   connect(sock,(struct sockaddr *) &sin, sizeof(sin));
>
>   strcpy(odoslat, "meno=Martin");
>
>   sprintf(buf,"POST http://localhost/index.php3 HTTP/1.1\r\n");
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows
> NT)\r\n");
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"Host: %s\r\n", server);
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"Accept-Charset: iso-8859-2, windows-1250; q=0.8, us-ascii;
> q=0.2\r\n");
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"Content-type: text/html\r\n");
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"Content-length: %d\r\n", strlen(odoslat));
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"\r\n");
>   send(sock, buf, strlen(buf),0);
>   sprintf(buf,"%s\r\n", odoslat);
>   send(sock, buf, strlen(buf),0);
>   read(sock,prijem, 550, 0);
>   printf("%s\n", prijem);
> }
> ============================================================
>
> Pri spusteni programu mi dostanem od web serveru takuto odpoved:
> ============================================================
> HTTP/1.1 200 OK
> Date: Thu, 31 Jan 2002 13:05:00 GMT
> Server: Apache/1.3.12 (Unix)  (Red Hat/Linux) mod_czech/3.1.0 PHP/3.0.16
> X-Powered-By: PHP/3.0.16
> Vary: User-Agent, Accept-Charset
> Transfer-Encoding: chunked
> Content-Type: text/html; charset=iso-8859-2
>
> 60
> <html>
> <FORM ACTION="odpoved.php3" METHOD=POST>
> Meno:<INPUT TYPE=TEXT name=meno>
> </FORM>
> </html>
> 0
>
> 9@ř9@
> ========================================================
>
>
> Ocakaval som, ze ako odpoved mi nacita skript odpoved.php3 aj so zadanym
> menom Martin.
>
>
> Mozete mi poradit preco to tak nie je, alebo ako to pracuje?
> Dik.
>
>
>
>
>
>
>
>
>




Další informace o konferenci Linux