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;