Hi, Tim
Thanks
/* 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>
double number = 1.0;
int LoopNumber = 5;
int fdc,fds;
struct sockaddr_in addr,c_addr;
socklen_t len = sizeof(addr);
void ServerRecvfromClient()
{
char buf[30]="";
printf(“before Server receive…\n”);
recvfrom(fds, buf, 30, 0, (struct sockaddr *)&c_addr, &len);
printf("\n: Server Received data: %s \n",buf);
number = atof(buf);
}
void ServerSendtoClient(double temp)
{
char buf[30]= “”;
int n = 0;
printf(“before Server sends…\n”);
sprintf(buf, “%f”, temp);
if ((n=sendto(fdc, buf, strlen(buf)+1, 0, (struct sockaddr *)&c_addr, sizeof(c_addr)))<0 )
{
printf(“Server sends to Client error\n”);
}
printf(" Server 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));
//Server addr
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(ServerPort);
ret = bind(fds, (struct sockaddr *)&addr, sizeof(addr));
printf(“Server subsystem bind local %d\n”,ret);
if(ret < 0) printf("%s\n", strerror(errno));
//Client addr
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(ClientPort);
struct inheritance inherit_Client;
char *file_Client="/home/test/Client";
char *Client_arg_list[] = {file_Client, NULL};
inherit_Client.flags = SPAWN_SETND|SPAWN_NOZOMBIE;
inherit_Client.nd = netmgr_strtond(“node2”,NULL);
if(pid = spawn(file_Client,0,NULL,&inherit_Client ,Client_arg_list,NULL) == -1)
{
printf(“spawn error!”);
exit(-1);
}
while(LoopNumber–)
{
ServerRecvfromClient();
ServerSendtoClient(number);
} //end while
return 0;
}