Mathieu92140
Messages postés4Date d'inscriptionvendredi 20 décembre 2013StatutMembreDernière intervention23 décembre 2013
-
20 déc. 2013 à 15:14
Mathieu92140
Messages postés4Date d'inscriptionvendredi 20 décembre 2013StatutMembreDernière intervention23 décembre 2013
-
23 déc. 2013 à 10:09
Bonjour,
J'ai actuellement un programme codé en C et j'ai deux code erreur et des warning lors de la compile du programme , voir ci-dessous :
xot.c: In function 'cmascote':
xot.c:65:20: error: storage size of 'octaddr' isn't known
xot.c: In function 'getsock':
xot.c:224:19: error: 'AF_INET' undeclared (first use in this function)
xot.c:224:19: note: each undeclared identifier is reported only once for each function it appears in
xot.c:224:28: error: 'SOCK_STREAM' undeclared (first use in this function)
xot.c: In function 'doconn':
xot.c:243:24: error: storage size of 'tsock' isn't known
xot.c:245:5: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
xot.c:246:29: error: 'AF_INET' undeclared (first use in this function)
xot.c: In function 'dorecv':
xot.c:292:11: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
int dosend(int *s,int *ddl,char *sndData);
int dorecv(int *s);
int doconn(int *s, unsigned long *octaddrp, unsigned short port);
int trtrecv(int XOTlg,char *XOTpkt);
void getsock(int *s);
cmascote(unsigned short MASport,
unsigned long MASIP,
int NbBcl,
int lMAScall,
int lMASreq,
char *dMAScall,
char *dMASreq)
{
int FLGerr; /* flag erreur */
int X25rcv; /* type de paquet X25 recu */
int WaitMascote; /* flag attente reponse Mascote */
int BCLreq; /* Boucle Requete */
int TOTerr; /* Cumul des requete ratees */
int RepOK; /* Cumul des reponse OK de Mascote */
int gotbytes; /* number of bytes received */
int sndbytes; /* number of bytes sent */
int s; /* socket descriptor */
int rc; /* return code */
struct in_addr octaddr; /* host internet address (binary) */
unsigned short port; /* port number sent as parameter */
char * charaddr; /* host internet address (dotted dec) */
struct hostent *hostnm; /* server host name information */
int dd2l=9; /* len dd2 */
int dd3l=8; /* len dd3 */
int dd4l=7; /* len dd4 */
int IndxReq=0;
unsigned short X25type; /* type de paquet RR, RNR, DATA */
/* ----------------------------------------------------------------------------- */
/* X25 CLEAR CAUSE 0 DIAG 0 */
char dd2[9] = "\x00\x00\x00\x05\x10\x01\x13\x00\x00";
/*-----------------*/
/* doconn() */
/*-----------------*/
int doconn(int *s, unsigned long *octaddrp, unsigned short port)
{
int rc;
int temps;
struct sockaddr_in tsock;
/*-----------------*/
/* dorecv() */
/*-----------------*/
int dorecv(int *s)
{
int temps;
int gotbytes;
int X25flag;
int rc;
int i;
struct {
unsigned short XOTver;
unsigned short XOTlg;
} pfxXOT;
char *ptr1;
unsigned short usl1, usl2, LetsGO;
char data[280];
char carac = ' ';
X25flag = X25_FLAG_OTHER;
rc = X25_FLAG_OTHER;
temps = *s;
gotbytes = recv(temps, data, sizeof(data), 0);
if (gotbytes < 0) {
tcperror("MASreq: error for recv");
X25flag=X25_FLAG_ERROR;
return X25flag;
}
/* recv OK (gotbytes >=0) */
printf("MASreq: received %d octets (data TCP)\n", gotbytes);
i=0;
if (gotbytes > 0) {
LetsGO=1; usl1=0; usl2=0;
ptr1=&data[0];
while(LetsGO)
{
memcpy(&pfxXOT,ptr1,4);
usl2=pfxXOT.XOTlg; usl2+=4;
/* traitement du paquet XOT ptr1 et usl2) */
printf("traitement paquet XOT : long paquet = %d\n",usl2);
if (i) printf("* plusieurs paquets XOT dans un paquet TCP\n");
rc=trtrecv(usl2,ptr1);
ptr1+=usl2;
usl1+=usl2;
i++;
if (usl1 >= gotbytes) LetsGO=0;
}
} /* data TCP recu */
return rc;
}
/*-----------------*/
/* trtrecv() */
/*-----------------*/
int trtrecv(int XOTlg,char *XOTpkt)
{
char *ptr1;
int X25flag = X25_FLAG_OTHER;
int i, j;
char carac = ' ';
ptr1=XOTpkt;
for (i=0;i<XOTlg;i++) {
carac = *ptr1;
printf("%02x",carac);
if ((j=(i+1)%4) == 0) printf(" ");
if ((j=(i+1)%32) == 0) printf("\n");
ptr1++ ;
}
printf("\n");
ptr1=XOTpkt;
ptr1+=6;
if (XOTlg == 7) {
/* test RR */
carac=*ptr1;
if (carac == 0x17) X25flag = X25_FLAG_CLEAR_CONF;
else {
if (carac &= 1) X25flag = X25_FLAG_RR;
else X25flag = X25_FLAG_OTHER;
}
}
else {
if (XOTlg > 7) {
/* test DATA */
carac=*ptr1;
if ((carac &=1) == 0) X25flag = X25_FLAG_DATA;
else { /* pas des data */
carac=*ptr1;
switch (carac)
{
case 0x0F: X25flag = X25_FLAG_CALL_ACCEPT;
break;
case 0x13: X25flag = X25_FLAG_CLEAR;
break;
case 0x17: X25flag = X25_FLAG_CLEAR_CONF;
break;
default: X25flag = X25_FLAG_OTHER;
}
} /* fin else - pas des DATA */
} /* fin if XOTlg > 7 ) */
} /* fin else (XOTlg <> 7 */
/* printf("MAS data received: type X25 = %d\n", X25flag); */
printf("<--- received : type X25 = %s\n",X25tmsg[X25flag]);
return X25flag;
}
/*-----------------*/
/* dosend() */
/*-----------------*/
int dosend(int *s,int *ddl,char *sndData)
{
int temps;
int lsndData;
int sndbytes;
int i,j;
char *ptr1;
char carac = ' ';
temps = *s;
lsndData = *ddl;
sndbytes = send(temps, sndData, lsndData, 0);
if (sndbytes < 0) {
tcperror("MASreq: error for send");
}
else {
printf("MASreq: sent %d octets\n", sndbytes);
ptr1=sndData;
for (i=0;i<sndbytes;i++) {
carac = *ptr1;
printf("%02x",carac);
if ((j=(i+1)%4) == 0) printf(" ");
if ((j=(i+1)%32) == 0) printf("\n");
ptr1++ ; }
printf("\n\n");
}
return sndbytes;
}
Pourriez vous m'aidez ?
A voir également:
Each undeclared identifier is reported only once for each function it appears in
Dans les messages d'erreur de compilation, la ligne d'ou le problème provient est indiquée (xot.c:224:28) -> ligne 224.
En gros tu utilises des variable qui n'ont pas été déclarées, donc qui n'ont aucune valeur. As tu déja programmé ? Pke les variables c'est un peu le cours n°1 quand tu commence la programmation :)
Pour les erreurs de type "xot.c:65:20: error: storage size of 'octaddr' isn't known ", essaie de mettre
in_addr octaddr;
au lieu de
struct in_addr octaddr;
et idem pour l'autre.
Mathieu92140
Messages postés4Date d'inscriptionvendredi 20 décembre 2013StatutMembreDernière intervention23 décembre 2013 20 déc. 2013 à 16:14
J'ai deja effectué quelques programme en C oui mais mes connaissance sont limités dans ce domaine .
J'ai effectué le changement au niveau de la ligne 65 , j'obtiens ces code erreurs :
xot.c: In function 'cmascote':
xot.c:65:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'octaddr'
xot.c:65:17: error: 'octaddr' undeclared (first use in this function)
xot.c:65:17: note: each undeclared identifier is reported only once for each function it appears in
xot.c: In function 'getsock':
xot.c:224:19: error: 'AF_INET' undeclared (first use in this function)
xot.c:224:28: error: 'SOCK_STREAM' undeclared (first use in this function)
xot.c: In function 'doconn':
xot.c:243:24: error: storage size of 'tsock' isn't known
xot.c:245:5: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
xot.c:246:29: error: 'AF_INET' undeclared (first use in this function)
xot.c: In function 'dorecv':
xot.c:292:11: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]