protocole HTTP: Client GCC : 'Bad Description File'

 
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> HTTP
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
RIO
dummy mioche
dummy mioche


Inscrit le: 09 Juil 2003
Messages: 3

MessagePosté le: Jeu Sep 18, 2003 1:38 pm    Sujet du message: protocole HTTP: Client GCC : 'Bad Description File' Répondre en citant

Salut,
Lors de l'exécution du client HTTP (en C), le read provoque met errno à 9 (Bad Description File). Pourtant, tout est OK (création socket, connexion).

any idea ?

PS je suis sur Windows NT et j'ai du changé qques includes
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Salemioche
salemioche
salemioche


Inscrit le: 05 Avr 2002
Messages: 350
Localisation: FR- BIOT

MessagePosté le: Mar Sep 23, 2003 12:47 pm    Sujet du message: Répondre en citant

quels code exactement utilisez vous ? quel compilateur ? sur quel site la requete ?
_________________
Creer son site - Hebergement - Jumeaux
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Yahoo Messenger MSN Messenger
RIO
dummy mioche
dummy mioche


Inscrit le: 09 Juil 2003
Messages: 3

MessagePosté le: Mar Sep 23, 2003 1:54 pm    Sujet du message: Répondre en citant

Le code a été compilé par g++ (IDE : DEV-CPP). La requete passe par un proxy. La requete est http://java.sun.com/index.html
Voila le code incriminé :


#include <windows.h>
#include <string.h>
#include <fstream>
#include <map>
#define IDC_MAIN_EDIT 101
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#define CONF_FILE "http.host"
#define PACKET_SIZE 1024
#include <stdio.h> /* Definitions for stream input/output. */
#include <errno.h> /*Defines the system error variable errno and the error
numbers set by system calls. Errors which exist in Unix(tm)
but not MSDOS have value -1.*/

#include <signal.h> /*Definitions for ANSI defined signaling capability */
#include <unistd.h> /*This file is part of the Mingw32 package. */
#include <stdlib.h>
#include <iostream>

void requete(void);

//int to_server_socket = -1;
char server_name[100]; // nom du host du serveur
int port = 8080;
char request_host[PACKET_SIZE];
char request_path[PACKET_SIZE];
struct sockaddr_in serverSockAddr;
struct hostent *serverHostEnt;
unsigned long hostAddr;
//SOCKADDR_IN sin;
int ind=-1;

SOCKET sock;

using namespace std;

void TraiteRequete();
int readn(int fd, char *ptr, int n);

int main () {
TraiteRequete();
system("PAUSE");
return 0;
}
void TraiteRequete(){
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

cout<<"===================================================================\n";
/* initialise a zero serverSockAddr */
memset((void *)&serverSockAddr,sizeof(serverSockAddr),0);
/* converti l'adresse ip 9.100.1.1 en entier long */
hostAddr = inet_addr(server_name);

if ( (long)hostAddr != (long)-1)
memcpy((void *)&hostAddr,(void *)&serverSockAddr.sin_addr,
sizeof(hostAddr));
else /* si on a donné un nom */
{
serverHostEnt = gethostbyname(server_name);
if (serverHostEnt == NULL) {
printf("probleme gethost\n");
exit(1);
}
memcpy((void *)serverHostEnt->h_addr,
(void *)&serverSockAddr.sin_addr,serverHostEnt->h_length);
}
serverSockAddr.sin_port = htons(8080); /* host to network port */
serverSockAddr.sin_family = AF_INET; /* AF_*** : INET=internet */
serverSockAddr.sin_addr.s_addr = inet_addr("10.254.97.12");

/* creation de la socket */
if ( (ind = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("probleme de creation socket client\n");
exit(2);
}
/* requete de connexion */
if(connect(ind,(struct sockaddr *)&serverSockAddr,
sizeof(serverSockAddr))<0)
{
printf("probleme demande de connection\n");
exit(3);
}

requete();

/* fermeture de la connection */
shutdown(ind,2);
close(ind);
cout << "connexion close\n";
//return 1;
}


void requete (void) {
char buffer[PACKET_SIZE+1];
char line[PACKET_SIZE+2];
int rc;
static unsigned char isEntete = 1;
char *finEntete;
FILE *bulk, *entete;
sprintf(buffer,"Vide\n");
sprintf(line,"GET http://java.sun.com/index.html HTTP/1.1\r\n"
//"Host: %s\r\n"
"Host: java.sun.com\r\n"
"Proxy-Authorization : Basic cmlvanA6bWFyaW9uMDk\r\n"
//"Accept : image/gif, image/x-xbitmap, image/jpeg,"
//" image/pjpeg, image/png, */*\r\n"
// authentification sample
"\r\n"
,request_path,request_host);
cout<<"===================================================================\n";
cout<<"requete : \n";
printf(line);
cout<<"===================================================================\n";
printf ("socket : %d\n",ind);
int se = send(ind,line,strlen(line)+1,0);
printf("Send!!! %d\n",se);
int index = 0,d;
cout<<"===================================================================\n";

if ( ( bulk = fopen("bulkhttp.txt","wb")) == NULL ) {
printf ( "can't open file to write bulk\n" );
exit(1);
}
if ( ( entete = fopen("entete.txt","wb")) == NULL ) {
fclose(bulk);
printf ( "can't open file to write entete\n" );
exit(1);
}
do {
sprintf(buffer," ");
d = readn(ind,buffer,PACKET_SIZE);
cout << buffer;
/*
cout <<"===============================================================\n";
cout<<buffer<<'\n';;
cout <<"===============================================================\n";
*/
if ( isEntete == 1 ) {
finEntete = (char *)strstr(buffer,"\r\n\r\n");
if ( finEntete != NULL ) {
*finEntete = 0x00;
fwrite(buffer,1,strlen(buffer),entete);
fwrite(finEntete+4,1,rc-strlen(buffer)-4,bulk);
isEntete = 0;
}
else
fwrite(buffer,1,d,bulk);
fclose(entete);
}
else
fwrite(buffer,1,d,bulk);
} while ( d > -1 ) ;
fclose(bulk);
}


int readn(int fd, char *ptr, int n){
int nl, nr;
cout << "fd : " << fd <<'\n';
nl = n;
while ( nl > 0 ) {
nr = read(fd,ptr,nl);
cout << ptr<<'\n';
if (nr < 0 ){
cout << "nr : " << nr<<'\n';
cout <<"errno : " << errno << '\n';

return nr; /*error*/
}
else
if ( nr == 0 )
break;
nl -= nr;
ptr += nr;
}
*ptr = 0x00;
//cout <<"n-nl : " <<n-nl <<'\n';
cout << ptr;
return (n-nl);
}
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> HTTP Toutes les heures sont au format CET (Europe)
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Affilzen SARL : Mention légale