/* File: server.c */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <spawn.h>
#include <errno.h>
#include <unistd.h>
#include <sys/select.h>
#include “Communication.h”
double number = 1.0;
int fdc,fds;
struct sockaddr_in addr,c_addr;
socklen_t len = sizeof(addr);
void SumRecvfromGain()
{
char buf[30]="";
printf(“before sum receive…\n”);
recvfrom(fdc, buf, 30, 0, (struct sockaddr *)&c_addr, &len);
printf("\n: Sum Received data: %s \n",buf);
number = atof(buf);
}
void SumSendtoGain(double temp)
{
char buf[30]= “”;
int n = 0;
printf(“before sum sends…\n”);
sprintf(buf, “%f”, temp);
if ((n=sendto(fdc, buf, strlen(buf)+1, 0, (struct sockaddr *)&c_addr, sizeof(c_addr)))<0 )
{
printf(“Sum sends to Gain error\n”);
}
printf(" Sum sended %s\n",buf);
}
int main(int argc, char **argv)
{
int n;
pid_t pid;
int ret;
int on = 1;
fds = socket(AF_INET, SOCK_DGRAM, 0); //SOCK_DGRAM
fdc = socket(AF_INET, SOCK_DGRAM, 0);
setsockopt(fds, SOL_SOCKET,SO_REUSEADDR,&on, sizeof(on));
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(GainSumPort);
ret = bind(fds, (struct sockaddr *)&addr, sizeof(addr));
printf(“Sum subsystem bind local %d\n”,ret);
if(ret < 0) printf("%s\n", strerror(errno));
bzero(&c_addr, sizeof(c_addr));
c_addr.sin_family = AF_INET;
c_addr.sin_addr.s_addr = inet_addr(Node2_IP);
c_addr.sin_port = htons(SumGainPort1);
struct inheritance inherit_Gain;
char *file_Gain="/home/filter/Gain";
char *Gain_arg_list[] = {file_Gain, NULL};
inherit_Gain.flags = SPAWN_SETND|SPAWN_NOZOMBIE;
inherit_Gain.nd = netmgr_strtond(“node2”,NULL);
if(pid = spawn(file_Gain,0,NULL,&inherit_Gain ,Gain_arg_list,NULL) == -1)
{
printf(“spawn error!”);
exit(-1);
}
while(LoopNumber–)
{
SumRecvfromGain();
SumSendtoGain(number);
} //end while
return 0;
}