WEB开发网
开发学院服务器服务器方案 集群服务器间的信息交换 阅读

集群服务器间的信息交换

 2008-11-28 11:00:07 来源:WEB开发网   
核心提示: 步骤1: 脱离开原有进程并建立守护进程,程序如下: pid = fork(); //建立进程if ( pid< 0 ) return ;if ( pid!=0 ) exit(0); //父进程退出setsid (); //建立对话期setpgrp(); //建立进程组,集群服务器间的

步骤1: 脱离开原有进程并建立守护进程。程序如下:

pid = fork(); //建立进程
if ( pid< 0 ) return ;
if ( pid!=0 ) exit(0); //父进程退出
setsid (); //建立对话期
setpgrp(); //建立进程组,并成为进程组的首进程
chdir("/"); //更换工作目录为根目录
umask(0);

步骤2: 三通进程负责接收远程航空管制中心的数据。

//建立socket
Sid = socket (AF_INET, SOCK_DGRAM, 0);
if (sid < 0) {
perror(" n IN distribute.c create socket41432:");
exit(1);
}
//从/etc/services文件中获得服务名称,得到服务端口号。
sp = getservbyname ("head", "udp");
if (sp == NULL) {
printf(": head not found in /etc/servicesn");
exit(1);
}
addr.sin_port = sp->s_port;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
//打开地址重用机制
on = 1;
setsockopt(sid, SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on) );
//绑定此服务名
if ( bind ( sid, (struct sockaddr *)&addr, sizeof(struct sockaddr_in) )< 0 ) {
perror ( " n bind addr");
exit(0);
}
addrLen=sizeof(struct sockaddr_in);
//设定目的地址为组播地址
local_net.sin_family = AF_INET;
local_net.sin_addr.s_addr = inet_addr(multicast_ip);
sp = getservbyname ("mult_portt", "udp");
if (sp == NULL) {
printf(": hjff_port not found in /etc/servicesn");
exit(1);
}
local_net.sin_port = sp->s_port;
//循环等待接收和处理数据
for(;;) {
memset ( buff,0,2048 );
num = recvfrom ( sid, buff,2048,0, (struct sockaddr *)&srcAddr, &addrLen);
if ( num< 0 ) {
perror ( "n recvfrom ");
continue;
}

步骤3: 收到报文后,组织和封装数据并在局域网内利用组播来将数据转发给双服务器。

链接:ARP协议

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。

IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为硬件地址(MAC地址),以保证通信的顺利进行。

上一页  1 2 3 4 

Tags:集群 服务器 信息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接