nassimatique
Messages postés4Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 8 mars 2007
-
7 mars 2007 à 12:27
nassimatique
Messages postés4Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 8 mars 2007
-
8 mars 2007 à 17:24
#include <stdio.h>
#include <netdb.h>
#include
#include <string.h>
#include
#include <netinet/in.h>
#include <sys/socket.h>
#define TAILLE 4096
void appli(char *f);
int readn(int fd, char *ptr, int n);
int socket_vers_serveur = -1;
char nom_du_serveur[100]; /* nom du host du serveur */
int port=80;
char chemin[100];
char buffer[TAILLE+1];
int rc;
int main (int argc, char *argv[])
{
struct sockaddr_in serverSockAddr; /* addresse de la socket */
struct hostent *serverHostEnt; /* description du host serveur */
unsigned long hostAddr; /* addr du serveur */
sprintf(nom_du_serveur,argv[1]);
sprintf(chemin,argv[2]);
/* initialisé à zéro serverSockAddr */
bzero((void *)&serverSockAddr,sizeof(serverSockAddr));
/* converti l'adresse ip 9.100.1.1 en entier long */
hostAddr = inet_addr(nom_du_serveur);
if ( (long)hostAddr != (long)-1)
bcopy((void *)&hostAddr,
(void *)&serverSockAddr.sin_addr,
sizeof(hostAddr));
else /* si on a donné un nom */
{
serverHostEnt = gethostbyname(nom_du_serveur);
bcopy((void *)serverHostEnt->h_addr,
(void *)&serverSockAddr.sin_addr,
serverHostEnt->h_length);
}
serverSockAddr.sin_port = htons(port); /* host to network port */
serverSockAddr.sin_family = AF_INET; /* AF_*** : INET=internet */
/* création de la socket */
socket_vers_serveur = socket(AF_INET,SOCK_STREAM,0);
/* requête de connexion */
connect(socket_vers_serveur,(struct sockaddr *)&serverSockAddr,
sizeof(serverSockAddr));
/* construction de la requête HTTP */
sprintf(buffer,"GET %s HTTP/1.1\r\n"
"Host: %s\r\n"
"\r\n"
,chemin,nom_du_serveur);
/* envoie de la requête http */
send(socket_vers_serveur,buffer,strlen(buffer)+1,0);
/* receptionde la reponse */
do {
rc = readn(socket_vers_serveur,buffer,TAILLE);
if (rc>0) buffer[rc] = 0x00;
printf(buffer);
} while ( rc > 0 ) ;
/* fermeture de la connection */
shutdown(socket_vers_serveur,2);
close(socket_vers_serveur);
return 0;
}
int readn(int fd, char *ptr, int n){
int nl, nr;
nl = n;
while ( nl > 0 ) {
nr = read(fd,ptr,nl);
if (nr < 0 )
return nr; /*error*/
else
if ( nr == 0 )
break;
nl -= nr;
ptr += nr;
}
*ptr = 0x00;
return (n-nl);
}
nassimatique
Messages postés4Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 8 mars 2007 7 mars 2007 à 12:32
quand j'essaye de compiler mon programme il m'affiche a chaque fois "erreur de segmentation". je suis debutnt dans la progrmmation plz help !!
merçi d'avance
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 7 mars 2007 à 12:56
Qd tu essais de lancer ton prog il t'affiche "erreur de segmentation" ? tu peux pas lancer ton programme, s'il a pas été compilé...
Donc la compilation se passe bien. Comment lances tu ton programme ?