begin process at 2012 05 29 08:33:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Réseau & Internet

 > 

Erreur de segmentation d'un simple client http sous linux !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur de segmentation d'un simple client http sous linux !!

mercredi 7 mars 2007 à 12:27:41 | Erreur de segmentation d'un simple client http sous linux !!

nassimatique

#include <stdio.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#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);
}
mercredi 7 mars 2007 à 12:32:26 | Erreur de segmentation d'un simple client http sous linux !!

nassimatique

Réponse acceptée !

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

mercredi 7 mars 2007 à 12:56:37 | Re : Erreur de segmentation d'un simple client http sous linux !!

luhtor

Réponse acceptée !
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 ?


mercredi 7 mars 2007 à 13:43:07 | je lance mon pg comme suite ....

nassimatique

Réponse acceptée !
oui c vrai !!
je lance mon pg de la façon suivante :
./a.out "http://www.google.com"
es c'est juste !!
jeudi 8 mars 2007 à 00:17:19 | Re : Erreur de segmentation d'un simple client http sous linux !!

luhtor

Réponse acceptée !
sprintf(nom_du_serveur,argv[1]);
sprintf(chemin,argv[2]);

=> tu utilises deux arguments et tu n'en fournis qu'un seul, et comme tu ne fais aucun test de la valeur argc, ca crash.


jeudi 8 mars 2007 à 17:24:17 | Re : Erreur de segmentation d'un simple client http sous linux !!

nassimatique

Réponse acceptée !
oui c vrai mon ami !!!
peut tu me proposer une solution stp !!!
plz plz plz


Cette discussion est classée dans : int, serveur, include, socket, serversockaddr


Répondre à ce message

Sujets en rapport avec ce message

Serveur Vc++6 pb dans recv [ par alfred ] Salut a tousJ'ai un probleme dans mon serveur et je ne sais pas comment le resoudre. Le client se connecte bien et envoie le bon nombre de caracteres encore mon serveur [ par skysee ] bonjour,je suis toujours avec mon serveur en c sous visual c++ sous windows(sis eulement j'avais linux).Le problème est que je n'ai pas d'erreur de co Thread et socket besoin de conseil [ par kawito ] Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p socket [ par flatou ] salutvoila le code du serveur sous dos que j'ai fait :#include #include #include #pragma comment(lib, "ws2_32.lib")SOCKET s;SOCKET c;SOCKET result;soc Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois Client/Serveur, encore..... [ par glubust ] Je veux faire fonctionner une application client/serveur sous UNIX (client) et WINDOWS (serveur).Le programme client envoi une simple requête au serve Soucis de socket et connect sous QNX [ par Gui51 ] Bonjour, nous avons un soucis lors d'une connection client sous QNX (UNIX).Voici le type d'erreur que nous obtenons suite à la compilation...<IMG alt= Client FTP sous QNX (ou bien Unix, Linux) [ par Gui51 ] Bonjour,je voudrais savoir si vous avez une aide à m'apporter concernant cette compilation de code pour le client:#include <stdi Fin de recv [ par Ziman ] Bonjour,je fais actuellement une chtite application. J'aimerai juste qu'un client se connecte sur un serveur et qu'il puisse lui envoyer des messages. socket trop lents [ par cid7777777 ] bonjour,jessaye de faire un jeu qui peu se jouera 2 en reseau local.je ne connais absolument rien en reso, mais en fouillant sur le net,  jai trouver


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales