Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230

    undefined reference

    Ciao ragazzi
    è qualche ora che sabtto la testa contro questo errore:
    stop_waitS.c:150: warning: assignment makes pointer from integer without a cast
    /tmp/ccG0WwFG.o: In function `main':
    stop_waitS.c.text+0x182): undefined reference to `send_releable'
    stop_waitS.c.text+0x1bb): undefined reference to `send_releable'

    Ho fatto ricerche anche su google ma non ho ottenuto nulla che mi aiutasse.
    Grazie.

    il codice è il seguente:
    Codice PHP:
    #include <sys/types.h>

    #include <sys/socket.h>

    #include <netinet/in.h>

    #include <arpa/inet.h>
    #include <errno.h>
    #include <stdio.h>
    #include <unistd.h>

    #include <stdlib.h>
    #include <time.h>
    #include <fcntl.h>

    #define PORT 5500
    #define BUFFSIZE 4096
    #define MIN(_x_,_y_)(((_x_)<(_y_) )? (_x_):(_y_))
    #define DEBUG 0
    #define EXEC_FAILED 1

    typedef struct{
      
    charfilename;
      
    unsigned long encoded_file_size;
    }
    first_message;



    double elapsed_time(time_t endtime_t start);
    charrate (unsigned long lengthdouble internal);
    charfind_fileName(charpath);
    ssize_t send_reliable(int sdvoidbuf,size_t len,charerr,const struct sockaddrto);
    unsigned long get_file_size(FILEfin);

    int main (int argcchar** argv){

      
    FILEfin;
      
    first_message fs;
      
    int sd
      
    struct sockaddr_in dest;
      
    char buf[BUFFSIZE];  /*buffer for socket*/
      
    unsigned long lengthfile_size,chunk_size;
      
    time_t end,start;
      
    double internal
      

      if (
    argc != 3) {
        
    fprintf(stderr,"Usage: IPdestination path \n");
       exit(
    EXEC_FAILED);
    }

      
    memset((char *)&dest0sizeof(dest));
      
    dest.sin_family AF_INET;
      
    dest.sin_port htons(PORT);
      
    dest.sin_addr.s_addr inet_addr(argv[1]); /*destination's address*/
     
      
    if ((sd socket(AF_INET,SOCK_DGRAM,0))<0) {
      
    perror("socket creation failed");
      exit(
    EXEC_FAILED);
      }
      
    fin fopen(argv[2],"rb");
      if (
    fin != NULL){
          
          
    fs.filename find_fileName(argv[2]);
          
    fs.encoded_file_size htonl(get_file_size(fin));    
          while (
    send_releable(sd,fs,sizeof(fs),"unable to send first message",(struct sockaddr*)&dest)<0){
          
    send_releable(sd,fs,sizeof(fs),"unable to send first message",(struct sockaddr*)&dest);}
              
          

    #ifdef DEBUG
    printf("file_size %ld \n",get_file_size(fin));
     
    printf("filename %s\n"fs.filename);
    #endif 
       
          
           
    for (length=0length file_sizelength += chunk_size ){

               
    chunk_size MIN(BUFFSIZEfile_size-length);

               
    fread(bufchunk_size,1fin);  

    #ifdef DEBUG
    printf("chunk_size %ld \n"chunk_size);
    printf("length %ld \n"length);
    #endif
           
    start time(NULL);    
               if (
    chunk_size != sendto(sdbufchunk_size,0,(struct sockaddr*)&destsizeof(dest))){

                  
    perror("Unable to send data");
           }else {
             
    endtime(NULL);
             
    internal+=elapsed_time(end,start);
             }
        }     

        
    fclose(fin);

        }else{

        
    printf("Unable to open file");

        }
    if (
    length == file_size){
    printf(" file has been sent successfully with rate %ld \n"rate (length,internal));
     }

    close(sd); 
    return 
    0;  
    }

    ssize_t send_reliable(int sdvoidbuf,size_t len,charerr, const struct sockaddrto){
     
     
    unsigned long byte_sent;
     if(
    byte_sent sendto(sdbuflen0tosizeof(to))<0){
          
    perror(err); }
     
    sleep(2);
     if(
    fcntl(sd,F_SETFL,O_NONBLOCK)==-1){
        
    perror("Impossible to set NONBLOCK mode for the socket");
     }     
     return 
    recvfrom(sdbuf,len,0,NULL,NULL);
    }

    unsigned long get_file_size(FILEfin){
     
    unsigned long file_size;
     
    fseek(fin,0SEEK_END);

     
    file_size ftell(fin);
     
    fseek(fin,0SEEK_SET);
     return 
    file_size;
    }



    charrate(unsigned long lengthdouble internal){

      static 
    char res[15];
      
    double udprate = (double)length/internal;
    #ifdef DEBUG
    printf("internal %f \n"internal);
    printf("udprate %ld \n",length);
    #endif 

      
    if(udprate<1024.0)
         
    sprintf(res"%.2f B/s",udprate);
      else if(
    udprate 1024.0*1024.0)
         
    sprintf(res"%.2f KB/s"udprate 1024.0);
      else
         
    sprintf(res"%.2f MB/s"udprate / (1024.0*1024.0));
      return 
    res;
    }

    double elapsed_time(time_t endtime_t start){

     return 
    difftime(endstart); 
    }

    charfind_fileName(charpath){

     
    chartoken;
     
    token strtok(path"/");
     while(
    token != NULL) {
         if (
    strpbrk(token,".") != NULL){
         break; } 
        
    token strtok(NULL"/"); 
      }
     return 
    token;   


  2. #2
    send_releable dov'è definita ?

    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Grazie sergio

    Era un errore molto stupido in pratica la mia funzione si chiama send_reliable e da qualche parte l'ho chiamata send_releable.

    Ciao e grazie

  4. #4
    cose che capitano
    ciao

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Non te la prendere puntino, ma per questo tipo di errori non dovresti ricorrere al forum, se non altro, per imparare a lavorare da solo ...

    Sono errori di compilazione dettagliatamente "spiegati" dallo stesso compilatore, che ti dice

    "undefined reference to `send_releable'"

    e quindi facilmente identificabili ...

    Se non ci metti un minimo di impegno su questi, figurati cosa succede sugli errori piu' "infidi" ... e se non ci fosse il forum ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    ok. hai ragione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.