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