Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2207 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Erreur compilation sur prog en C

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Erreur compilation sur prog en C

n°2214327
mattt92
Posté le 23-12-2013 à 10:21:27  profilanswer
 

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]  
 
 
Mon code :  
 
/*** client XOT ****** en cours ********************************/  
/* Thread d'interrogation Mascotte */  
/* appel© par MFPMAS.. tsched() */  
/* versions ans stop sur rejet , sans detail et compteur de fin */  
/* version avec traitement plusieurs packet XOT dans un packet TCP */  
/*********************************************************************/  
 
/* #define Resolve_Via_Lookup */  
 
#pragma runopts(noargparse,plist(mvs),noexecops)  
 
#include <manifest.h>  
#include <bsdtypes.h>  
#include <in.h>  
#include <netdb.h>  
#include <socket.h>  
#include <inet.h>  
#include <errno.h>  
#include <fcntl.h>  
#include <tcperrno.h>  
#include <bsdtime.h>  
#include <stdio.h>  
 
#define X25_FLAG_ERROR 0  
#define X25_FLAG_CALL_ACCEPT 1  
#define X25_FLAG_DATA 2  
#define X25_FLAG_RR 3  
#define X25_FLAG_CLEAR 4  
#define X25_FLAG_CLEAR_CONF 5  
#define X25_FLAG_OTHER 6  
#define X25_Nb_FLAG 7  
 
 
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);  
 
static char X25tmsg[X25_Nb_FLAG][12] = {  
"ERROR",  
"CALL ACCEPT",  
"DATA",  
"RR",  
"CLEAR",  
"CLEAR CONF",  
"Autre"  
};  
 
 
/* ============================================================= */  
/* thread d'appel Mascote */  
/* ============================================================= */  
 
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";  
 
/* X25 CLEAR CONF */  
char dd3[8] = "\x00\x00\x00\x04\x10\x01\x17\x00";  
 
/* X25 RR PR(1) */  
char dd4[7] = "\x00\x00\x00\x03\x10\x01\x21";  
 
/* X25 CALL Mascote ----  
char dd1[19] = "\x00\x00\x00\x0F\x10\x01\x0B\x07\x90\x00\x00\x10\x06\x42\x08\x08\x43\x02\x02";  
--- */  
 
/* X25 DATA requete interro Mascote prod -------  
char dd5[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF6\xF1\xF3";  
X25 DATA requete interro Mascote Dev  
char dd6[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF3\xF9\xF7";  
---- */  
/* ----------------------------------------------------------------------------- */  
 
BCLreq = NbBcl;  
octaddr.s_addr = MASIP;  
/* fprintf(stdout, "MASreq: Addr = %d\n", MASIP); */  
 
port = MASport;  
/* fprintf(stdout, "MASreq: port = %d\n", port); */  
 
/* --------------------------------------------------------- */  
/* Boucle de connexions XOT et requete Mascote */  
/* --------------------------------------------------------- */  
TOTerr = 0; RepOK = 0;  
while (BCLreq) {  
FLGerr =0;  
 
/* ----- Init socket ---------- */  
getsock(&s);  
/* printf("MASreq: No socket = %d\n", s); */  
 
/* ----- connexion TCP ---------- */  
rc = doconn(&s, &octaddr.s_addr, port);  
if (rc < 0) {  
tcperror("MASreq: error for connect" );  
printf("errno = %d",errno);  
if (errno == ECONNREFUSED)  
printf("errno = ECONNREFUSED" );  
BCLreq=0; /* dans ce cas on stoppe reellement */  
FLGerr=1;  
}  
else {  
/* ----- connexion TCP OK ------- */  
/* printf("MASreq: rc connect = %d\n", rc); */  
/* ______ send Call X25 ____________ */  
printf("---> Send CALL X25\n" );  
sndbytes = dosend(&s,&lMAScall,dMAScall);  
if (sndbytes < 1)  
{ FLGerr=1;  
BCLreq=0; /* dans ce cas on stoppe reellement */  
break; }  
 
/* ______ receive Call Confirm normalement ________ */  
X25rcv = dorecv(&s);  
switch (X25rcv)  
{  
case X25_FLAG_CALL_ACCEPT: FLGerr=0;  
/* printf("<--- CALL Confirm recu\n\n" ); */  
break;  
default: FLGerr=1;  
/* BCLreq=0; on n'arrete pas la boucle */  
/* printf("ERREUR rcv apres call : X25rcv = %d\n",X25rcv);*/  
}  
/* zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ce ca qui merde */  
/* if (FLGerr) break; */  
 
if (FLGerr == 0) {  
/* ______ Call CONF recu - envoi DATA requete _____ */  
printf("---> Send DATA X25 (req Mascote)\n" );  
sndbytes = dosend(&s,&lMASreq,dMASreq);  
if (sndbytes < 1)  
{ FLGerr=1;  
BCLreq=0; /* on arrete la boucle */  
break; }  
}  
 
if (FLGerr == 0) {  
/* ______ Rceive Confirm (RR) ou/et DATA reponse _____ */  
WaitMascote = 1;  
while (WaitMascote)  
{  
X25rcv = dorecv(&s);  
switch (X25rcv)  
{  
case X25_FLAG_DATA: FLGerr=0;  
WaitMascote = 0;  
RepOK++ ;  
/* printf("<--- DATA recue\n\n" ); */  
break;  
case X25_FLAG_RR: FLGerr=0;  
/* printf("<--- RR recu\n\n" ); */  
break;  
default: FLGerr=1;  
/* BCLreq=0; NO STOP */  
WaitMascote = 0;  
}  
} /* end while waitmascote */  
}  
if (FLGerr == 0) /* on a recu la reponse de mascote */  
{  
/* ____ DATA reponse recue - envoi Ack (RR)___ */  
printf("---> Send RR\n" );  
sndbytes = dosend(&s,&dd4l,dd4);  
if (sndbytes < 1)  
{ FLGerr=1;  
BCLreq=0; /* on arrete la boucle */  
break; }  
}  
 
if (FLGerr == 0)  
{  
/* ____ Envoi Clear X25 ______________________ */  
printf("---> Send CLEAR\n" );  
sndbytes = dosend(&s,&dd2l,dd2);  
if (sndbytes < 1)  
{ FLGerr=1;  
BCLreq=0; /* on arret la boucle */  
break; }  
}  
 
/* ____ receive du Clear CONF ________________ */  
if (FLGerr == 0) X25rcv = dorecv(&s);  
 
} /* end else (connexion TCP XOT OK) */  
/* __________ D©connexion ________________ */  
rc = close(s);  
if (BCLreq) BCLreq -= 1;  
if (FLGerr) TOTerr++;  
IndxReq++;  
printf("------------------------------------- %d\n",IndxReq);  
sleep(1);  
} /** end while (BCLreq ) */  
 
printf("Nb bcl %d, Reponse OK %d, Tot erreur %d\n",NbBcl,RepOK,TOTerr);  
}  
 
/*-----------------*/  
/* getsock() */  
/*-----------------*/  
void getsock(int *s)  
{  
int temp;  
temp = socket(AF_INET, SOCK_STREAM, 0);  
 
if (temp < 0) {  
tcperror("MASreq: error socket" );  
printf("errno = %d",errno);  
}  
 
 
*s = temp;  
return;  
}  
 
/*-----------------*/  
/* doconn() */  
/*-----------------*/  
int doconn(int *s, unsigned long *octaddrp, unsigned short port)  
{  
int rc;  
int temps;  
struct sockaddr_in tsock;  
 
memset(&tsock, 0, sizeof(tsock));  
tsock.sin_family = AF_INET;  
tsock.sin_port = htons(port);  
tsock.sin_addr.s_addr = *octaddrp;  
 
temps = *s;  
rc = connect(temps, (struct sockaddr *)&tsock, sizeof(tsock));  
return rc;  
}  
 
/*-----------------*/  
/* 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 ?  
 

mood
Publicité
Posté le 23-12-2013 à 10:21:27  profilanswer
 

n°2214328
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 10:23:55  profilanswer
 

Bonjour
 
Pour ton code utilise les balises faites pour cela, ainsi on aura une meilleur visibilité de ton code
 

Code :
  1. like this :D


---------------
Made you your own sentence without believing that of the others...
n°2214334
mattt92
Posté le 23-12-2013 à 10:51:26  profilanswer
 

Code :
  1. /*** client XOT ******    en cours    ********************************/
  2. /* Thread d'interrogation Mascotte                                   */
  3. /* appel© par MFPMAS.. tsched()                                      */
  4. /* versions ans stop sur rejet , sans detail et compteur de fin      */
  5. /* version avec traitement plusieurs packet XOT dans un packet TCP   */
  6. /*********************************************************************/
  7. /* #define Resolve_Via_Lookup */
  8. #pragma runopts(noargparse,plist(mvs),noexecops)
  9. #include <manifest.h>
  10. #include <bsdtypes.h>
  11. #include <in.h>
  12. #include <netdb.h>
  13. #include <socket.h>
  14. #include <inet.h>
  15. #include <errno.h>
  16. #include <fcntl.h>
  17. #include <tcperrno.h>
  18. #include <bsdtime.h>
  19. #include <stdio.h>
  20. #define X25_FLAG_ERROR       0
  21. #define X25_FLAG_CALL_ACCEPT 1
  22. #define X25_FLAG_DATA        2
  23. #define X25_FLAG_RR          3
  24. #define X25_FLAG_CLEAR       4
  25. #define X25_FLAG_CLEAR_CONF  5
  26. #define X25_FLAG_OTHER       6
  27. #define X25_Nb_FLAG          7
  28. int dosend(int *s,int *ddl,char *sndData);
  29. int dorecv(int *s);
  30. int doconn(int *s, unsigned long *octaddrp, unsigned short port);
  31. int trtrecv(int XOTlg,char *XOTpkt);
  32. void getsock(int *s);
  33. static char X25tmsg[X25_Nb_FLAG][12] = {
  34.    "ERROR",
  35.    "CALL ACCEPT",
  36.    "DATA",
  37.    "RR",
  38.    "CLEAR",
  39.    "CLEAR CONF",
  40.    "Autre"
  41. };
  42. /* ============================================================= */
  43. /* thread d'appel Mascote                                        */
  44. /* ============================================================= */
  45. cmascote(unsigned short MASport,
  46.          unsigned long MASIP,
  47.          int NbBcl,
  48.          int lMAScall,
  49.          int lMASreq,
  50.          char *dMAScall,
  51.          char *dMASreq)
  52. {
  53.     int FLGerr;                /* flag erreur                         */
  54.     int X25rcv;                /* type de paquet X25 recu             */
  55.     int WaitMascote;           /* flag attente reponse Mascote        */
  56.     int BCLreq;                /* Boucle  Requete                     */
  57.     int TOTerr;                /* Cumul des requete ratees            */
  58.     int RepOK;                 /* Cumul des reponse OK de Mascote     */
  59.     int gotbytes;              /* number of bytes received            */
  60.     int sndbytes;              /* number of bytes sent                */
  61.     int s;                     /* socket descriptor                   */
  62.     int rc;                    /* return code                         */
  63.     struct in_addr octaddr;    /* host internet address (binary)      */
  64.     unsigned short port;       /* port number sent as parameter       */
  65.     char * charaddr;           /* host internet address (dotted dec)  */
  66.     struct hostent *hostnm;    /* server host name information        */
  67.     int dd2l=9;                 /* len dd2              */
  68.     int dd3l=8;                 /* len dd3              */
  69.     int dd4l=7;                 /* len dd4              */
  70.     int IndxReq=0;
  71.     unsigned short X25type;     /* type de paquet RR, RNR, DATA */
  72.   /* ----------------------------------------------------------------------------- */
  73.   /* X25 CLEAR CAUSE 0 DIAG 0 */
  74. char dd2[9]  = "\x00\x00\x00\x05\x10\x01\x13\x00\x00";
  75.   /* X25 CLEAR CONF */
  76. char dd3[8]  = "\x00\x00\x00\x04\x10\x01\x17\x00";
  77.   /* X25 RR PR(1) */
  78. char dd4[7]  = "\x00\x00\x00\x03\x10\x01\x21";
  79.   /* X25 CALL Mascote    ----
  80. char dd1[19] = "\x00\x00\x00\x0F\x10\x01\x0B\x07\x90\x00\x00\x10\x06\x42\x08\x08\x43\x02\x02";
  81.   --- */
  82.   /* X25 DATA requete interro Mascote prod    -------
  83. char dd5[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF6\xF1\xF3";
  84.     X25 DATA requete interro Mascote Dev
  85. char dd6[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF3\xF9\xF7";
  86.    ---- */
  87.   /* ----------------------------------------------------------------------------- */
  88.     BCLreq = NbBcl;
  89.     octaddr.s_addr = MASIP;
  90.   /* fprintf(stdout, "MASreq: Addr = %d\n", MASIP); */
  91.     port = MASport;
  92.   /* fprintf(stdout, "MASreq: port = %d\n", port);  */
  93.     /* --------------------------------------------------------- */
  94.     /* Boucle de connexions XOT et requete Mascote               */
  95.     /* --------------------------------------------------------- */
  96.     TOTerr = 0; RepOK = 0;
  97.     while (BCLreq)  {
  98.       FLGerr =0;
  99.       /* ----- Init socket ---------- */
  100.       getsock(&s);
  101.   /*  printf("MASreq: No socket = %d\n", s);  */
  102.       /* ----- connexion TCP ---------- */
  103.       rc = doconn(&s, &octaddr.s_addr, port);
  104.       if (rc < 0) {
  105.           tcperror("MASreq: error for connect" );
  106.           printf("errno = %d",errno);
  107.           if (errno == ECONNREFUSED)
  108.                     printf("errno = ECONNREFUSED" );
  109.           BCLreq=0;      /* dans ce cas on stoppe reellement */
  110.           FLGerr=1;
  111.                   }
  112.       else {
  113.           /* ----- connexion TCP OK ------- */
  114.      /*   printf("MASreq: rc connect = %d\n", rc);  */
  115.           /* ______ send Call X25 ____________  */
  116.           printf("---> Send CALL X25\n" );
  117.           sndbytes = dosend(&s,&lMAScall,dMAScall);
  118.           if (sndbytes < 1)
  119.              { FLGerr=1;
  120.                BCLreq=0;    /* dans ce cas on stoppe reellement */
  121.                break;  }
  122.           /* ______ receive Call Confirm normalement ________  */
  123.           X25rcv = dorecv(&s);
  124.           switch (X25rcv)
  125.              {
  126.                case X25_FLAG_CALL_ACCEPT: FLGerr=0;
  127.                 /*   printf("<--- CALL Confirm recu\n\n" ); */
  128.                      break;
  129.                default: FLGerr=1;
  130.              /*     BCLreq=0;   on n'arrete pas la boucle */
  131.         /*   printf("ERREUR rcv apres call : X25rcv = %d\n",X25rcv);*/
  132.              }
  133.   /* zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ce ca qui merde */
  134.    /*     if (FLGerr) break; */
  135.        if (FLGerr == 0) {
  136.           /* ______ Call CONF recu - envoi DATA requete _____  */
  137.           printf("---> Send DATA X25 (req Mascote)\n" );
  138.           sndbytes = dosend(&s,&lMASreq,dMASreq);
  139.           if (sndbytes < 1)
  140.              { FLGerr=1;
  141.                BCLreq=0;     /* on arrete la boucle */
  142.                break;  }
  143.         }
  144.        if (FLGerr == 0) {
  145.           /* ______ Rceive Confirm (RR) ou/et DATA reponse  _____  */
  146.           WaitMascote = 1;
  147.           while (WaitMascote)
  148.              {
  149.               X25rcv = dorecv(&s);
  150.               switch (X25rcv)
  151.                  {
  152.                     case X25_FLAG_DATA: FLGerr=0;
  153.                                         WaitMascote = 0;
  154.                                         RepOK++ ;
  155.                                /*    printf("<--- DATA recue\n\n" ); */
  156.                                         break;
  157.                     case X25_FLAG_RR:   FLGerr=0;
  158.                                  /*     printf("<--- RR recu\n\n" ); */
  159.                                         break;
  160.                     default:            FLGerr=1;
  161.                                  /*     BCLreq=0;  NO STOP */
  162.                                         WaitMascote = 0;
  163.                  }
  164.              }  /* end while waitmascote */
  165.         }
  166.           if (FLGerr == 0)      /* on a recu la reponse de mascote */
  167.              {
  168.              /* ____ DATA reponse recue - envoi Ack (RR)___ */
  169.               printf("---> Send RR\n" );
  170.               sndbytes = dosend(&s,&dd4l,dd4);
  171.               if (sndbytes < 1)
  172.                  { FLGerr=1;
  173.                    BCLreq=0;   /* on arrete la boucle */
  174.                    break;  }
  175.              }
  176.           if (FLGerr == 0)
  177.              {
  178.              /* ____ Envoi Clear X25 ______________________ */
  179.               printf("---> Send CLEAR\n" );
  180.               sndbytes = dosend(&s,&dd2l,dd2);
  181.               if (sndbytes < 1)
  182.                  { FLGerr=1;
  183.                    BCLreq=0;  /* on arret la boucle */
  184.                    break;  }
  185.              }
  186.              /* ____ receive du Clear CONF ________________ */
  187.           if (FLGerr == 0)  X25rcv = dorecv(&s);
  188.         } /* end else (connexion TCP XOT OK) */
  189.        /* __________ D©connexion ________________ */
  190.        rc = close(s);
  191.        if (BCLreq) BCLreq -= 1;
  192.        if (FLGerr) TOTerr++;
  193.        IndxReq++;
  194.        printf("------------------------------------- %d\n",IndxReq);
  195.        sleep(1);
  196.       }   /** end while (BCLreq )        */
  197. printf("Nb bcl %d, Reponse OK %d, Tot erreur %d\n",NbBcl,RepOK,TOTerr);
  198. }
  199. /*-----------------*/
  200. /*    getsock()    */
  201. /*-----------------*/
  202. void getsock(int *s)
  203. {
  204.     int temp;
  205.     temp = socket(AF_INET, SOCK_STREAM, 0);
  206.     if (temp < 0) {
  207.           tcperror("MASreq: error socket" );
  208.           printf("errno = %d",errno);
  209.          }
  210.     *s = temp;
  211.     return;
  212. }
  213. /*-----------------*/
  214. /*    doconn()     */
  215. /*-----------------*/
  216. int doconn(int *s, unsigned long *octaddrp, unsigned short port)
  217. {
  218.     int rc;
  219.     int temps;
  220.     struct sockaddr_in tsock;
  221.     memset(&tsock, 0, sizeof(tsock));
  222.     tsock.sin_family      = AF_INET;
  223.     tsock.sin_port        = htons(port);
  224.     tsock.sin_addr.s_addr = *octaddrp;
  225.     temps = *s;
  226.     rc = connect(temps, (struct sockaddr *)&tsock, sizeof(tsock));
  227.     return rc;
  228. }
  229. /*-----------------*/
  230. /*    dorecv()     */
  231. /*-----------------*/
  232. int dorecv(int *s)
  233. {
  234.     int temps;
  235.     int gotbytes;
  236.     int X25flag;
  237.     int rc;
  238.     int i;
  239.     struct {
  240.        unsigned short XOTver;
  241.        unsigned short XOTlg;
  242.            } pfxXOT;
  243.     char *ptr1;
  244.     unsigned short usl1, usl2, LetsGO;
  245.     char data[280];
  246.     char carac = ' ';
  247.     X25flag = X25_FLAG_OTHER;
  248.     rc = X25_FLAG_OTHER;
  249.     temps = *s;
  250.     gotbytes = recv(temps, data, sizeof(data), 0);
  251.     if (gotbytes < 0) {
  252.         tcperror("MASreq: error for recv" );
  253.         X25flag=X25_FLAG_ERROR;
  254.         return X25flag;
  255.     }
  256.     /*  recv OK (gotbytes >=0) */
  257.     printf("MASreq: received %d octets (data TCP)\n", gotbytes);
  258.     i=0;
  259.     if (gotbytes > 0) {
  260.        LetsGO=1; usl1=0; usl2=0;
  261.        ptr1=&data[0];
  262.        while(LetsGO)
  263.          {
  264.           memcpy(&pfxXOT,ptr1,4);
  265.           usl2=pfxXOT.XOTlg; usl2+=4;
  266.           /* traitement du paquet XOT ptr1 et usl2) */
  267.           printf("traitement paquet XOT : long paquet = %d\n",usl2);
  268.           if (i) printf("* plusieurs paquets XOT dans un paquet TCP\n" );
  269.           rc=trtrecv(usl2,ptr1);
  270.           ptr1+=usl2;
  271.           usl1+=usl2;
  272.           i++;
  273.           if (usl1 >= gotbytes) LetsGO=0;
  274.          }
  275.      }  /* data TCP recu */
  276.     return rc;
  277. }
  278. /*-----------------*/
  279. /*    trtrecv()    */
  280. /*-----------------*/
  281. int trtrecv(int XOTlg,char *XOTpkt)
  282. {
  283.     char *ptr1;
  284.     int X25flag = X25_FLAG_OTHER;
  285.     int i, j;
  286.     char carac = ' ';
  287.     ptr1=XOTpkt;
  288.     for (i=0;i<XOTlg;i++) {
  289.        carac = *ptr1;
  290.        printf("%02x",carac);
  291.        if ((j=(i+1)%4) == 0) printf(" " );
  292.        if ((j=(i+1)%32) == 0) printf("\n" );
  293.        ptr1++ ;
  294.     }
  295.     printf("\n" );
  296.     ptr1=XOTpkt;
  297.     ptr1+=6;
  298.     if (XOTlg == 7) {
  299.        /* test RR */
  300.        carac=*ptr1;
  301.        if (carac == 0x17) X25flag = X25_FLAG_CLEAR_CONF;
  302.        else {
  303.           if (carac &= 1) X25flag = X25_FLAG_RR;
  304.           else X25flag = X25_FLAG_OTHER;
  305.             }
  306.     }
  307.     else {
  308.        if (XOTlg > 7) {
  309.            /* test DATA */
  310.            carac=*ptr1;
  311.            if ((carac &=1) == 0) X25flag = X25_FLAG_DATA;
  312.            else {    /* pas des data */
  313.                carac=*ptr1;
  314.                switch (carac)
  315.                   {
  316.                   case 0x0F: X25flag = X25_FLAG_CALL_ACCEPT;
  317.                              break;
  318.                   case 0x13: X25flag = X25_FLAG_CLEAR;
  319.                              break;
  320.                   case 0x17: X25flag = X25_FLAG_CLEAR_CONF;
  321.                              break;
  322.                   default:          X25flag = X25_FLAG_OTHER;
  323.                   }
  324.                }   /* fin else - pas des DATA */
  325.           }     /* fin if XOTlg > 7 ) */
  326.         }    /* fin else (XOTlg <> 7 */
  327. /* printf("MAS data received: type X25 = %d\n", X25flag); */
  328.     printf("<--- received : type X25 = %s\n",X25tmsg[X25flag]);
  329.     return X25flag;
  330. }
  331. /*-----------------*/
  332. /*    dosend()     */
  333. /*-----------------*/
  334. int dosend(int *s,int *ddl,char *sndData)
  335. {
  336.     int temps;
  337.     int lsndData;
  338.     int sndbytes;
  339.     int i,j;
  340.     char *ptr1;
  341.     char carac = ' ';
  342.     temps = *s;
  343.     lsndData = *ddl;
  344.     sndbytes = send(temps, sndData, lsndData, 0);
  345.     if (sndbytes < 0) {
  346.         tcperror("MASreq: error for send" );
  347.         }
  348.     else {
  349.         printf("MASreq: sent %d octets\n", sndbytes);
  350.         ptr1=sndData;
  351.         for (i=0;i<sndbytes;i++) {
  352.               carac = *ptr1;
  353.               printf("%02x",carac);
  354.               if ((j=(i+1)%4) == 0) printf(" " );
  355.               if ((j=(i+1)%32) == 0) printf("\n" );
  356.               ptr1++ ; }
  357.               printf("\n\n" );
  358.         }
  359.     return sndbytes;
  360. }

n°2214335
mattt92
Posté le 23-12-2013 à 10:53:25  profilanswer
 

Sorry , ça ira un peu mieux je pense .  
Le code n'a pas été dévellopé par moi même, je tenais a le préciser . Mais je pense que les erreurs généré lors de la compilation viennent des déclarations variables . Reste à savoir comment le résoudre .

n°2214337
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 11:08:50  profilanswer
 

Re,

 

Déjà ta un soucis sur AF_INET et SOCK_STREAM.

 

Ta variable n'est pas déclaré pour le programme, sachant que AF_INET pour la méthode socket c'est le protocole internet IPV4, tu as un problème avec ce protocole.

 

Pareil pour SOCK_STREAM, ça te permet d'établir la connexion entre deux points qui utilise soit le protocole internet IPV4 ou IPV6.

 

Tu as surement un problème de réception de ces données par le programme.

 

Tu verra que toutes les erreurs qui en découle sont lié à ce problème.

 

Cherche sur internet "méthode socket" C pour avoir de la documentation.
Et Essaye de voir pourquoi tu as un problème avec ce protocol dans ton programme

 

Bon courage.


Message édité par OrcusZ le 23-12-2013 à 11:09:26

---------------
Made you your own sentence without believing that of the others...
n°2214338
mattt92
Posté le 23-12-2013 à 11:23:28  profilanswer
 

A l'avenir je souhaiterais que les paramètres ip soit rentré en dur  dans le prog , ca pourrait palir à ce problème . Vu que ce programme pointeré vers un seul et même serveur .  
 
Reste a savoir comment géré et mettre en place ce parametre dans le code .

n°2214339
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 11:31:49  profilanswer
 

Re,
 
Pas un gros problème au vu de la signature de la fonction socket
 

Code :
  1. SOCKET WSAAPI socket(
  2.   _In_  int af,
  3.   _In_  int type,
  4.   _In_  int protocol
  5. );


---------------
Made you your own sentence without believing that of the others...
n°2214340
mattt92
Posté le 23-12-2013 à 11:43:21  profilanswer
 

Cela correspond a la déclaration de ma fonction socket a inséré  dans le code ?

n°2214345
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 12:58:19  profilanswer
 

Oui,
 
Sauf au lieu d'utiliser des "int" entré en dur, il utilise les attribut prédéfini AF_INET et SOCK_STREAM pour récupérer l'ip et faire le lien.
 
Voici la doc http://msdn.microsoft.com/en-us/li [...] 85%29.aspx


---------------
Made you your own sentence without believing that of the others...
n°2214347
mattt92
Posté le 23-12-2013 à 13:46:41  profilanswer
 

Cette fonction WSAAPI peut donc remplacer le contenu de la fonction getsock ? Ou on doit le mettre dans le contenu de la fonction ?

mood
Publicité
Posté le 23-12-2013 à 13:46:41  profilanswer
 

n°2214349
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 13:55:28  profilanswer
 

Non la méthode que tu appel c'est socket, et elle est utilisé dans ton programme. C'est cette fonction qui pose problème car elle ne récupère pas de valeur pour AF_INET
 
Regarde l'exemple à la fin du lien que je tes données


---------------
Made you your own sentence without believing that of the others...
n°2214353
mattt92
Posté le 23-12-2013 à 15:02:23  profilanswer
 

Si je comprend bien , il faut que les variables AF_INET et SOCK_STREAM soit déclaré avant d'appeler la fonction . Si c'est bien sa je ferais la modif dans le code et je génèrerais a nouveau la compil .

n°2214354
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 15:07:39  profilanswer
 

Re,
 
Vu que tu m'as dit que tu le programme allez pointé sur un seul et même serveur oui :D
 
Mais AF_INET et SOCK_STREAM sont sensé faire le travail dynamiquement.
 
Je te conseille donc de sauvegarder le bout de code que tu as partager. Et ensuite d'essayer de comprendre pour AF_INET ne récupérer par l'IP cible.
 
Car si un jour l'ip de serveur change => obligé de changer le code.
 
Si tu fait fonctionner le code avec AF_INET et SOCK_STREAM, le programme s'adaptera tout seul comme un grand.


---------------
Made you your own sentence without believing that of the others...
n°2214357
mattt92
Posté le 23-12-2013 à 15:15:31  profilanswer
 

Je me suis mal exprimée , mon but est de pouvoir liste dans un fichier txt les différentes ip des serveurs , y'en a 4 et ca sera des adresses IP  fixe . Je souhaiterais que mon code puisse pointer vers ce fichier et prendre les parametres à l'interieur , puis je savoir si cela est possible?

n°2214358
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 15:24:52  profilanswer
 

Oui tout à fait possible tu as plusieurs fonction pour faire cela

 

fopen() : permet d'ouvrir le fichier
fclose() : permet de le fermer

 

Ensuite tu as plusieurs attributs qui te permettent soit de lire soit d'écrire dans ton fichier et tu as bien sur plusieurs façon de lire/écrire dans ton fichier.

 

Je t'épargne la recherche sur google. Je trouve ce tuto très bien fait ( c'est d'ailleurs avec ça que j'ai appris à me servir de ces fonctions )

 

http://fr.openclassrooms.com/infor [...] s-fichiers


Message édité par OrcusZ le 23-12-2013 à 15:25:01

---------------
Made you your own sentence without believing that of the others...
n°2214359
mattt92
Posté le 23-12-2013 à 15:25:07  profilanswer
 

Mais pour le moment je me contenterais de faire le test sur un seul serveur ( l'utilité d'avoir qu'une ip dans le code ) . Dans le cas ou les paramtere ip sont entrées en dur , il m'est pas utile de faire appel a AF_INET et SOCK_STREAM ?

n°2214360
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 15:26:05  profilanswer
 

mattt92 a écrit :

Mais pour le moment je me contenterais de faire le test sur un seul serveur ( l'utilité d'avoir qu'une ip dans le code ) . Dans le cas ou les paramtere ip sont entrées en dur , il m'est pas utile de faire appel a AF_INET et SOCK_STREAM ?


 
Si tu les entres en dur dans le code tu n'en à plus besoin.  


---------------
Made you your own sentence without believing that of the others...
n°2214363
mattt92
Posté le 23-12-2013 à 15:54:09  profilanswer
 

Je vais donc faire un test en entrant les param ip et port en dur dans le code . La fonction getsocket me sera plus utile dans ce cas la ?  
 
Au niveau de la fonction doconn , pourrais tu m'aider a savoir comment entrer les param en dur dans cette fonction ?  
 

Code :
  1. /*-----------------*/
  2. /*    doconn()     */
  3. /*-----------------*/
  4. int doconn(int *s, unsigned long *octaddrp, unsigned short port)
  5. {
  6.     int rc;
  7.     int temps;
  8.     struct sockaddr_in tsock;
  9.     memset(&tsock, 0, sizeof(tsock));
  10.     tsock.sin_family      = AF_INET;
  11.     tsock.sin_port        = htons(port);
  12.     tsock.sin_addr.s_addr = *octaddrp;
  13.     temps = *s;
  14.     rc = connect(temps, (struct sockaddr *)&tsock, sizeof(tsock));
  15.     return rc;
  16. }

n°2214364
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 16:02:43  profilanswer
 

Alors tu devrais mettre tes ip en define car tu les utilisent dans tout le code ( et comme tu veux pas les changer tu les mets pas en globale )
 

Code :
  1. #define "tonip"
  2. //ect...


 
Ta fonction get socket est utile car elle récupère le résultat de la fonction socket.


---------------
Made you your own sentence without believing that of the others...
n°2214366
mattt92
Posté le 23-12-2013 à 16:11:33  profilanswer
 

Je placerais dans ce cas la le #define au début de mon code à la suite des différentes déf des X25_FLAG ... Sous cette forme :
 

Code :
  1. #define X25_FLAG_ERROR       0
  2. #define X25_FLAG_CALL_ACCEPT 1
  3. #define X25_FLAG_DATA        2
  4. #define X25_FLAG_RR          3
  5. #define X25_FLAG_CLEAR       4
  6. #define X25_FLAG_CLEAR_CONF  5
  7. #define X25_FLAG_OTHER       6
  8. #define X25_Nb_FLAG          7
  9. #define X.X.X.X
  10. #define XXXX


 
Au niveau de la fonction getsocket , la déclaration de AF_INET et SOCKET_STREAM ne sont donc plus utile , mais y'a t'il un changement à faire au niveau des autres fontions (entre autres doconn ? )

n°2214367
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 16:14:28  profilanswer
 

Code :
  1. #define X25_FLAG_ERROR       0
  2.     #define X25_FLAG_CALL_ACCEPT 1
  3.     #define X25_FLAG_DATA        2
  4.     #define X25_FLAG_RR          3
  5.     #define X25_FLAG_CLEAR       4
  6.     #define X25_FLAG_CLEAR_CONF  5
  7.     #define X25_FLAG_OTHER       6
  8.     #define X25_Nb_FLAG          7
  9.     #define MONIP   X.X.X.X
  10.     #define AUTRES  XXXX


 
Les X étant les valeurs de ta variable.
 
Tu doit changer AF_INET et SOCKET_STREAM par tes nouvelles déclarations que tu as fait dans les defines


---------------
Made you your own sentence without believing that of the others...
n°2214369
mattt92
Posté le 23-12-2013 à 16:22:47  profilanswer
 

"AUTRES" correspondrait au numéro de port sur lequelle l'écoute devra être fait, au fameux MASport que tu retrouve dans le code.
 
AF_INET correspondrait à l'adresse IP
 
et SOCKET_STREAM   par "stream" ? si je me passe sur l'exemple du site?

n°2214370
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 16:30:26  profilanswer
 

mattt92 a écrit :

"AUTRES" correspondrait au numéro de port sur lequelle l'écoute devra être fait, au fameux MASport que tu retrouve dans le code.
 
AF_INET correspondrait à l'adresse IP
 
et SOCKET_STREAM   par "stream" ? si je me passe sur l'exemple du site?


 
En clair c'est ça, mais le nom que tu donne a tes defines ces nominatif, tu les appels comme tu veux ( faut que ça reste explicite )


---------------
Made you your own sentence without believing that of the others...
n°2214371
mattt92
Posté le 23-12-2013 à 16:51:42  profilanswer
 

Si je comprends bien , ca devrait donner cela au niveau de la fonction getsocket :  
 

Code :
  1. /*-----------------*/
  2. /*    getsock()    */
  3. /*-----------------*/
  4. void getsock(int *s)
  5. {
  6.     int temp;
  7.     temp = socket(MONIP, stream, 0) ;
  8.     if (temp < 0) {
  9.           tcperror("MASreq: error socket" );
  10.           printf("errno = %d",errno);
  11.          }
  12.     *s = temp;
  13.     return;
  14. }


 

n°2214373
OrcusZ
Pro AMD | .Net lover
Posté le 23-12-2013 à 18:06:55  profilanswer
 

C'est ça


---------------
Made you your own sentence without believing that of the others...
n°2215925
mattt92
Posté le 13-01-2014 à 13:05:36  profilanswer
 

Bonjour ,  
 
Désolé de ma période d'abscence . Je reviens donc sur le sujet .  
 
Une fois les entrées en dur faites pas les "define ...." et la fonction get socket modifiée , est il nécessaire de modifier la connect(...) dans la partie doconn() ?
 

Code :
  1. /*-----------------*/
  2. /*    doconn()     */
  3. /*-----------------*/
  4. int doconn(int *s, unsigned long *octaddrp, unsigned short port)
  5. {
  6.     int rc;
  7.     int temps;
  8.     int sockaddr_in tsock;
  9.     memset(&tsock, 0, sizeof(tsock));
  10.     tsock.sin_family      = AF_INET;
  11.     tsock.sin_port        = htons(port);
  12.     tsock.sin_addr.s_addr = *octaddrp;
  13.     temps = *s;
  14.     rc = connect(temps, (struct sockaddr *)&tsock, sizeof(tsock));
  15.     return rc;
  16. }

n°2215927
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 13:14:12  profilanswer
 

Bonjour,
 

Code :
  1. tsock.sin_family      = AF_INET;


 
Si je me souviens bien de tout cette ligne est à changer


---------------
Made you your own sentence without believing that of the others...
n°2215929
mattt92
Posté le 13-01-2014 à 13:22:07  profilanswer
 

Elle doit être modifié et les parametres IP et le port doivent etre entré en dur ?

n°2215931
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 13:26:37  profilanswer
 

Re,
 
Oui, donc si besoin tu auras peut être à modifier cette ligne aussi :
 

Code :
  1. tsock.sin_port        = htons(port);


---------------
Made you your own sentence without believing that of the others...
n°2215933
mattt92
Posté le 13-01-2014 à 13:51:23  profilanswer
 

Ok , du coup j'ai modifié les entrées dans les deux champs . Au niveau de ces paramètres il est préférable de les entré en binaire ou le decimal fera l'affaire ?  
 
Ce code a été dévelloppé pour etre exploiter sous un environnement MVS, apparement la fonction socket utilisée actuellement ne sont pas les mêmes sur du unix et les includes utlisés ne correspondre pas. Pourrais tu m'aider au niveau de cette partie ?

n°2215934
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 13:55:45  profilanswer
 

Re,
 
 
Pour les paramètres le décimal devrait faire l'affaire.
 
MVS je connais pas.
Logiquement sous UNIX il tous les includes existent je n'est jamais eu de soucis jusque là, surtout que les includes ne sont pas exotiques.
 
Sous qu'elle OS UNIX tu tourne? Car il peut manquer des librairies de développement qui t'amène à avoir ce problème.


---------------
Made you your own sentence without believing that of the others...
n°2215936
mattt92
Posté le 13-01-2014 à 14:03:38  profilanswer
 

Pour ma part je connais pas aussi ce type d'environement mais mon role est de pouvoir réadapté ce prog sur du unix et de pouvoir l'executé .  
 
Je tourne actuellement sur du  i686 GNU/Linux
 
Lors de la compile avec l'ensemble des includes actuellement dans le code. Plusieurs messages d'erreur remonte , les librairies sont introuvable apparement . En faisant une recherche sur le systeme effectivement, elle n'y sont pas , par exemple pour manifest.h qui est une librairie inexistante sur le systeme .  
 

n°2215938
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 14:08:09  profilanswer
 

Re,
 
Il doit te manquer des librairie.  
Tu pourrais me donner le nom de ta distribution ( Debian, Red Hat, Fedora, Mint ect... ) car sinon je ne pourrait pas t'aider.


---------------
Made you your own sentence without believing that of the others...
n°2215942
mattt92
Posté le 13-01-2014 à 14:23:10  profilanswer
 

je bosse actuellement sur du Debian 2.6.26-29

n°2215945
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 14:42:22  profilanswer
 

Re,
 
Dans ces cas là vérifie que tu as bien les build-essential d'installer.
 
Sudo apt-get install buil-essantial
 
ou quelque chose comme ça


---------------
Made you your own sentence without believing that of the others...
n°2215947
mattt92
Posté le 13-01-2014 à 15:02:41  profilanswer
 

bon j'ai crée un dossier ( je precise le chemin dans la commande de compilation) et j'ai mis toutes les librairies dont celle que j'avais besoin dans un dossier (les librairies que j'ai pu trouvé sur la machine )  
 
Actuellement j'ai les erreurs suivantes lors de la compile , ces erreurs te semble t'elle parlante  ?  
 

Code :
  1. xot.c:24:9: error: macro names must be identifiers
  2. xot.c:25:9: error: macro names must be identifiers
  3. xot.c: In function 'main':
  4. xot.c:98:22: error: too many decimal points in number
  5. xot.c:116:7: warning: passing argument 2 of 'doconn' from incompatible pointer type [enabled by default]
  6. xot.c:30:5: note: expected 'long unsigned int *' but argument is of type 'in_addr_t *'
  7. xot.c: In function 'doconn':
  8. xot.c:247:5: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
  9. xot.c: In function 'dorecv':
  10. xot.c:294:11: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]

n°2215948
mattt92
Posté le 13-01-2014 à 15:02:41  profilanswer
 

bon j'ai crée un dossier ( je precise le chemin dans la commande de compilation) et j'ai mis toutes les librairies dont celle que j'avais besoin dans un dossier (les librairies que j'ai pu trouvé sur la machine )  
 
Actuellement j'ai les erreurs suivantes lors de la compile , ces erreurs te semble t'elle parlante  ?  
 

Code :
  1. xot.c:24:9: error: macro names must be identifiers
  2. xot.c:25:9: error: macro names must be identifiers
  3. xot.c: In function 'main':
  4. xot.c:98:22: error: too many decimal points in number
  5. xot.c:116:7: warning: passing argument 2 of 'doconn' from incompatible pointer type [enabled by default]
  6. xot.c:30:5: note: expected 'long unsigned int *' but argument is of type 'in_addr_t *'
  7. xot.c: In function 'doconn':
  8. xot.c:247:5: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
  9. xot.c: In function 'dorecv':
  10. xot.c:294:11: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]

n°2215950
OrcusZ
Pro AMD | .Net lover
Posté le 13-01-2014 à 15:07:11  profilanswer
 

Re,
 
Si tu as fait des modifications dans le code peut tu le renvoyer :)


---------------
Made you your own sentence without believing that of the others...
n°2215954
mattt92
Posté le 13-01-2014 à 15:55:33  profilanswer
 

Les seules modifications que j'ai faites dans le code c'est celle ques nous avons vu ensemble :  
 

Code :
  1. /*** client XOT ******    en cours    ********************************/
  2. /* Thread d'interrogation Mascotte                                   */
  3. /* appel© par MFPMAS.. tsched()                                      */
  4. /* versions ans stop sur rejet , sans detail et compteur de fin      */
  5. /* version avec traitement plusieurs packet XOT dans un packet TCP   */
  6. /*********************************************************************/
  7. /* #define Resolve_Via_Lookup */
  8. #pragma runopts(noargparse,plist(mvs),noexecops)
  9. #include <netdb.h>
  10. #include <errno.h>
  11. #include <fcntl.h>
  12. #include <stdio.h>
  13. #define X25_FLAG_ERROR       0
  14. #define X25_FLAG_CALL_ACCEPT 1
  15. #define X25_FLAG_DATA        2
  16. #define X25_FLAG_RR          3
  17. #define X25_FLAG_CLEAR       4
  18. #define X25_FLAG_CLEAR_CONF  5
  19. #define X25_FLAG_OTHER       6
  20. #define X25_Nb_FLAG          7
  21. #define MASIP X.X.X.X
  22. #define MASPORT XXXX
  23. int dosend(int *s,int *ddl,char *sndData);
  24. int dorecv(int *s);
  25. int doconn(int *s, unsigned long *octaddrp, unsigned short port);
  26. int trtrecv(int XOTlg,char *XOTpkt);
  27. void getsock(int *s);
  28. static char X25tmsg[X25_Nb_FLAG][12] = {
  29.    "ERROR",
  30.    "CALL ACCEPT",
  31.    "DATA",
  32.    "RR",
  33.    "CLEAR",
  34.    "CLEAR CONF",
  35.    "Autre"
  36. };
  37. /* ============================================================= */
  38. /* thread d'appel Mascote                                        */
  39. /* ============================================================= */
  40. main(unsigned short MASport,
  41.          unsigned long MASIP,
  42.          int NbBcl,
  43.          int lMAScall,
  44.          int lMASreq,
  45.          char *dMAScall,
  46.          char *dMASreq)
  47. {
  48.     int FLGerr;                /* flag erreur                         */
  49.     int X25rcv;                /* type de paquet X25 recu             */
  50.     int WaitMascote;           /* flag attente reponse Mascote        */
  51.     int BCLreq;                /* Boucle  Requete                     */
  52.     int TOTerr;                /* Cumul des requete ratees            */
  53.     int RepOK;                 /* Cumul des reponse OK de Mascote     */
  54.     int gotbytes;              /* number of bytes received            */
  55.     int sndbytes;              /* number of bytes sent                */
  56.     int s;                     /* socket descriptor                   */
  57.     int rc;                    /* return code                         */
  58.     struct in_addr octaddr;    /* host internet address (binary)      */
  59.     unsigned short port;       /* port number sent as parameter       */
  60.     char * charaddr;           /* host internet address (dotted dec)  */
  61.     struct hostent *hostnm;    /* server host name information        */
  62.     int dd2l=9;                 /* len dd2              */
  63.     int dd3l=8;                 /* len dd3              */
  64.     int dd4l=7;                 /* len dd4              */
  65.     int IndxReq=0;
  66.     unsigned short X25type;     /* type de paquet RR, RNR, DATA */
  67.   /* ----------------------------------------------------------------------------- */
  68.   /* X25 CLEAR CAUSE 0 DIAG 0 */
  69. char dd2[9]  = "\x00\x00\x00\x05\x10\x01\x13\x00\x00";
  70.   /* X25 CLEAR CONF */
  71. char dd3[8]  = "\x00\x00\x00\x04\x10\x01\x17\x00";
  72.   /* X25 RR PR(1) */
  73. char dd4[7]  = "\x00\x00\x00\x03\x10\x01\x21";
  74.   /* X25 CALL Mascote    ----
  75. char dd1[19] = "\x00\x00\x00\x0F\x10\x01\x0B\x07\x90\x00\x00\x10\x06\x42\x08\x08\x43\x02\x02";
  76.   --- */
  77.   /* X25 DATA requete interro Mascote prod    -------
  78. char dd5[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF6\xF1\xF3";
  79.     X25 DATA requete interro Mascote Dev
  80. char dd6[26] = "\x00\x00\x00\x16\x10\x01\x00\x06\xE0\x00\x00\x00\x00\x21\x03\x04\xC3\xC1\xE2\xC8\x05\xF0\xF0\xF3\xF9\xF7";
  81.    ---- */
  82.   /* ----------------------------------------------------------------------------- */
  83.     BCLreq = NbBcl;
  84.     octaddr.s_addr = X.X.X.X;
  85.   /* fprintf(stdout, "MASreq: Addr = %d\n", MASIP); */
  86.     port = XXXX;
  87.   /* fprintf(stdout, "MASreq: port = %d\n", port);  */
  88.     /* --------------------------------------------------------- */
  89.     /* Boucle de connexions XOT et requete Mascote               */
  90.     /* --------------------------------------------------------- */
  91.     TOTerr = 0; RepOK = 0;
  92.     while (BCLreq)  {
  93.       FLGerr =0;
  94.       /* ----- Init socket ---------- */
  95.       getsock(&s);
  96.   /*  printf("MASreq: No socket = %d\n", s);  */
  97.       /* ----- connexion TCP ---------- */
  98.       rc = doconn(&s, &octaddr.s_addr, port);
  99.       if (rc < 0) {
  100.           tcperror("MASreq: error for connect" );
  101.           printf("errno = %d",errno);
  102.           if (errno == ECONNREFUSED)
  103.                     printf("errno = ECONNREFUSED" );
  104.           BCLreq=0;      /* dans ce cas on stoppe reellement */
  105.           FLGerr=1;
  106.                   }
  107.       else {
  108.           /* ----- connexion TCP OK ------- */
  109.      /*   printf("MASreq: rc connect = %d\n", rc);  */
  110.           /* ______ send Call X25 ____________  */
  111.           printf("---> Send CALL X25\n" );
  112.           sndbytes = dosend(&s,&lMAScall,dMAScall);
  113.           if (sndbytes < 1)
  114.              { FLGerr=1;
  115.                BCLreq=0;    /* dans ce cas on stoppe reellement */
  116.                break;  }
  117.           /* ______ receive Call Confirm normalement ________  */
  118.           X25rcv = dorecv(&s);
  119.           switch (X25rcv)
  120.              {
  121.                case X25_FLAG_CALL_ACCEPT: FLGerr=0;
  122.                 /*   printf("<--- CALL Confirm recu\n\n" ); */
  123.                      break;
  124.                default: FLGerr=1;
  125.              /*     BCLreq=0;   on n'arrete pas la boucle */
  126.         /*   printf("ERREUR rcv apres call : X25rcv = %d\n",X25rcv);*/
  127.              }
  128.   /* zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ce ca qui merde */
  129.    /*     if (FLGerr) break; */
  130.        if (FLGerr == 0) {
  131.           /* ______ Call CONF recu - envoi DATA requete _____  */
  132.           printf("---> Send DATA X25 (req Mascote)\n" );
  133.           sndbytes = dosend(&s,&lMASreq,dMASreq);
  134.           if (sndbytes < 1)
  135.              { FLGerr=1;
  136.                BCLreq=0;     /* on arrete la boucle */
  137.                break;  }
  138.         }
  139.        if (FLGerr == 0) {
  140.           /* ______ Rceive Confirm (RR) ou/et DATA reponse  _____  */
  141.           WaitMascote = 1;
  142.           while (WaitMascote)
  143.              {
  144.               X25rcv = dorecv(&s);
  145.               switch (X25rcv)
  146.                  {
  147.                     case X25_FLAG_DATA: FLGerr=0;
  148.                                         WaitMascote = 0;
  149.                                         RepOK++ ;
  150.                                /*    printf("<--- DATA recue\n\n" ); */
  151.                                         break;
  152.                     case X25_FLAG_RR:   FLGerr=0;
  153.                                  /*     printf("<--- RR recu\n\n" ); */
  154.                                         break;
  155.                     default:            FLGerr=1;
  156.                                  /*     BCLreq=0;  NO STOP */
  157.                                         WaitMascote = 0;
  158.                  }
  159.              }  /* end while waitmascote */
  160.         }
  161.           if (FLGerr == 0)      /* on a recu la reponse de mascote */
  162.              {
  163.              /* ____ DATA reponse recue - envoi Ack (RR)___ */
  164.               printf("---> Send RR\n" );
  165.               sndbytes = dosend(&s,&dd4l,dd4);
  166.               if (sndbytes < 1)
  167.                  { FLGerr=1;
  168.                    BCLreq=0;   /* on arrete la boucle */
  169.                    break;  }
  170.              }
  171.           if (FLGerr == 0)
  172.              {
  173.              /* ____ Envoi Clear X25 ______________________ */
  174.               printf("---> Send CLEAR\n" );
  175.               sndbytes = dosend(&s,&dd2l,dd2);
  176.               if (sndbytes < 1)
  177.                  { FLGerr=1;
  178.                    BCLreq=0;  /* on arret la boucle */
  179.                    break;  }
  180.              }
  181.              /* ____ receive du Clear CONF ________________ */
  182.           if (FLGerr == 0)  X25rcv = dorecv(&s);
  183.         } /* end else (connexion TCP XOT OK) */
  184.        /* __________ D©connexion ________________ */
  185.        rc = close(s);
  186.        if (BCLreq) BCLreq -= 1;
  187.        if (FLGerr) TOTerr++;
  188.        IndxReq++;
  189.        printf("------------------------------------- %d\n",IndxReq);
  190.        sleep(1);
  191.       }   /** end while (BCLreq )        */
  192. printf("Nb bcl %d, Reponse OK %d, Tot erreur %d\n",NbBcl,RepOK,TOTerr);
  193. }
  194. /*-----------------*/
  195. /*    getsock()    */
  196. /*-----------------*/
  197. void getsock(int *s)
  198. {
  199.     int temp;
  200.     temp = socket(MASIP, stream, 0);
  201.     if (temp < 0) {
  202.           tcperror("MASreq: error socket" );
  203.           printf("errno = %d",errno);
  204.          }
  205.     *s = temp;
  206.     return;
  207. }
  208. /*-----------------*/
  209. /*    doconn()     */
  210. /*-----------------*/
  211. int doconn(int *s, unsigned long *octaddrp, unsigned short port)
  212. {
  213.     int rc;
  214.     int temps;
  215.     struct sockaddr_in tsock;
  216.     memset(&tsock, 0, sizeof(tsock));
  217.     tsock.sin_family      = X.X.X.X;
  218.     tsock.sin_port        = XXXX(port);
  219.     tsock.sin_addr.s_addr = *octaddrp;
  220.     temps = *s;
  221.     rc = connect(temps, (struct sockaddr *)&tsock, sizeof(tsock));
  222.     return rc;
  223. }
  224. /*-----------------*/
  225. /*    dorecv()     */
  226. /*-----------------*/
  227. int dorecv(int *s)
  228. {
  229.     int temps;
  230.     int gotbytes;
  231.     int X25flag;
  232.     int rc;
  233.     int i;
  234.     struct {
  235.        unsigned short XOTver;
  236.        unsigned short XOTlg;
  237.            } pfxXOT;
  238.     char *ptr1;
  239.     unsigned short usl1, usl2, LetsGO;
  240.     char data[280];
  241.     char carac = ' ';
  242.     X25flag = X25_FLAG_OTHER;
  243.     rc = X25_FLAG_OTHER;
  244.     temps = *s;
  245.     gotbytes = recv(temps, data, sizeof(data), 0);
  246.     if (gotbytes < 0) {
  247.         tcperror("MASreq: error for recv" );
  248.         X25flag=X25_FLAG_ERROR;
  249.         return X25flag;
  250.     }
  251.     /*  recv OK (gotbytes >=0) */
  252.     printf("MASreq: received %d octets (data TCP)\n", gotbytes);
  253.     i=0;
  254.     if (gotbytes > 0) {
  255.        LetsGO=1; usl1=0; usl2=0;
  256.        ptr1=&data[0];
  257.        while(LetsGO)
  258.          {
  259.           memcpy(&pfxXOT,ptr1,4);
  260.           usl2=pfxXOT.XOTlg; usl2+=4;
  261.           /* traitement du paquet XOT ptr1 et usl2) */
  262.           printf("traitement paquet XOT : long paquet = %d\n",usl2);
  263.           if (i) printf("* plusieurs paquets XOT dans un paquet TCP\n" );
  264.           rc=trtrecv(usl2,ptr1);
  265.           ptr1+=usl2;
  266.           usl1+=usl2;
  267.           i++;
  268.           if (usl1 >= gotbytes) LetsGO=0;
  269.          }
  270.      }  /* data TCP recu */
  271.     return rc;
  272. }
  273. /*-----------------*/
  274. /*    trtrecv()    */
  275. /*-----------------*/
  276. int trtrecv(int XOTlg,char *XOTpkt)
  277. {
  278.     char *ptr1;
  279.     int X25flag = X25_FLAG_OTHER;
  280.     int i, j;
  281.     char carac = ' ';
  282.     ptr1=XOTpkt;
  283.     for (i=0;i<XOTlg;i++) {
  284.        carac = *ptr1;
  285.        printf("%02x",carac);
  286.        if ((j=(i+1)%4) == 0) printf(" " );
  287.        if ((j=(i+1)%32) == 0) printf("\n" );
  288.        ptr1++ ;
  289.     }
  290.     printf("\n" );
  291.     ptr1=XOTpkt;
  292.     ptr1+=6;
  293.     if (XOTlg == 7) {
  294.        /* test RR */
  295.        carac=*ptr1;
  296.        if (carac == 0x17) X25flag = X25_FLAG_CLEAR_CONF;
  297.        else {
  298.           if (carac &= 1) X25flag = X25_FLAG_RR;
  299.           else X25flag = X25_FLAG_OTHER;
  300.             }
  301.     }
  302.     else {
  303.        if (XOTlg > 7) {
  304.            /* test DATA */
  305.            carac=*ptr1;
  306.            if ((carac &=1) == 0) X25flag = X25_FLAG_DATA;
  307.            else {    /* pas des data */
  308.                carac=*ptr1;
  309.                switch (carac)
  310.                   {
  311.                   case 0x0F: X25flag = X25_FLAG_CALL_ACCEPT;
  312.                              break;
  313.                   case 0x13: X25flag = X25_FLAG_CLEAR;
  314.                              break;
  315.                   case 0x17: X25flag = X25_FLAG_CLEAR_CONF;
  316.                              break;
  317.                   default:          X25flag = X25_FLAG_OTHER;
  318.                   }
  319.                }   /* fin else - pas des DATA */
  320.           }     /* fin if XOTlg > 7 ) */
  321.         }    /* fin else (XOTlg <> 7 */
  322. /* printf("MAS data received: type X25 = %d\n", X25flag); */
  323.     printf("<--- received : type X25 = %s\n",X25tmsg[X25flag]);
  324.     return X25flag;
  325. }
  326. /*-----------------*/
  327. /*    dosend()     */
  328. /*-----------------*/
  329. int dosend(int *s,int *ddl,char *sndData)
  330. {
  331.     int temps;
  332.     int lsndData;
  333.     int sndbytes;
  334.     int i,j;
  335.     char *ptr1;
  336.     char carac = ' ';
  337.     temps = *s;
  338.     lsndData = *ddl;
  339.     sndbytes = send(temps, sndData, lsndData, 0);
  340.     if (sndbytes < 0) {
  341.         tcperror("MASreq: error for send" );
  342.         }
  343.     else {
  344.         printf("MASreq: sent %d octets\n", sndbytes);
  345.         ptr1=sndData;
  346.         for (i=0;i<sndbytes;i++) {
  347.               carac = *ptr1;
  348.               printf("%02x",carac);
  349.               if ((j=(i+1)%4) == 0) printf(" " );
  350.               if ((j=(i+1)%32) == 0) printf("\n" );
  351.               ptr1++ ; }
  352.               printf("\n\n" );
  353.         }
  354.     return sndbytes;
  355. }

n°2215955
mattt92
Posté le 13-01-2014 à 15:58:40  profilanswer
 

ERREUR DE COMPILATION :  
 

Code :
  1. xot.c:50:24: error: too many decimal points in number
  2. xot.c:50:24: error: expected ';', ',' or ')' before numeric constant
  3. xot.c:98:22: error: too many decimal points in number
  4. xot.c: In function 'getsock':
  5. xot.c:226:19: error: too many decimal points in number
  6. xot.c:226:26: error: 'stream' undeclared (first use in this function)
  7. xot.c:226:26: note: each undeclared identifier is reported only once for each function it appears in
  8. xot.c: In function 'doconn':
  9. xot.c:247:5: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
  10. xot.c:248:29: error: too many decimal points in number
  11. xot.c:249:33: error: called object '1998' is not a function
  12. xot.c: In function 'dorecv':
  13. xot.c:294:11: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Erreur compilation sur prog en C

 

Sujets relatifs
Programmation en CRESOLU Erreur dans un count
[C] Programmer "Jeu des batons" par récursivité[C]Détection de fin de fichier...
[C]Chaine qui ne s'affiche pas...exclure colonne d'un prog /s awk
[JAVA] aide compilation d'un programmeErreur incompréhensible d'une variable de type int
télécharger et installer C++erreur de compilation projet ou bibliothèque introuvable
Plus de sujets relatifs à : Erreur compilation sur prog en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR