SEND FUNCTION:

Code:
void menu_r(char *buffer,struct sockaddr_in addr_slave)
{
 printf("%s\n",buffer); /* debug output */
 struct sockaddr_in addr;
 int sd,addr_size;
 char message[100];

 /* send echo to CTRL */
 sprintf(message,"-e-%s-%d%s\n",inet_ntoa(addr_slave.sin_addr), ntohs(addr_slave.sin_port), buffer);
 printf("TRANSFER MESSAGE:\t\t%s",message);

 sd = socket(PF_INET, SOCK_DGRAM, 0);
 if(sd < 0)
 {
  perror("socket");
  abort();
 }
 addr.sin_family = AF_INET;
 addr.sin_port = htons(PORT_NUMBER_CTRL);
 addr.sin_addr.s_addr = INADDR_ANY;
 if(inet_aton(IP_CTRL, &addr.sin_addr) == 0)
 {
  perror(IP_CTRL);
  abort();
 }
 sendto(sd,message,strlen(message)+1,0,(struct sockaddr*)&addr,sizeof(addr));
 bzero(buffer,BUFSIZE);
 close(sd);
}




RECIVE FUNCTION

Code:
void menu_e_recive()
{
 char buffer[BUFSIZE];
 struct sockaddr_in addr;
 int sd, addr_size, bytes_read;
 sd = socket(PF_INET, SOCK_DGRAM, 0);
 if ( sd < 0 )
 {
  perror("socket");
  abort();
 }
 addr.sin_family = AF_INET;
 addr.sin_port = htons(PORT_NUMBER_CTRL);
 addr.sin_addr.s_addr = INADDR_ANY;
 if ( bind(sd, (struct sockaddr*)&addr, sizeof(addr)) < 0 )
 {
  perror("bind");
  abort();
 }
 do
 {
  bzero(buffer, BUFSIZE);
  addr_size = BUFSIZE;
  printf("DEBUG RECIVE START\n");
  bytes_read = recvfrom(sd, buffer, BUFSIZE, 0, (struct sockaddr*)&addr, &addr_size);
  printf("DEBUG RECIVE END:\t\t%s\n",buffer); // debug output
  if(bytes_read > 0)
   printf("%s\n",buffer);
  else
   perror("recvfrom");
 }
 while (bytes_read > 0);
 close(sd);
}





In terminal:
./send
-e-127.0.0.1-19834
-r-echo_ok
TRANSFER MESSAGE: -e-127.0.0.1-40675-r-echo_ok


./recive
gcc ctrl.c -o ctrl && ./ctrl -e 127.0.0.1 19834
YOU ENTER -e 127.0.0.1 19834
DEBUG RECIVE START




recive => send => recive (like ECHO)


WHERE MY ERROR??? pls help me