LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 625|回复: 2

关于xinetd自动启动进程的问题

[复制链接]
发表于 2004-7-18 16:41:20 | 显示全部楼层 |阅读模式
一个简单的分布式系统
主进程可以在任何一个节点上启动,它向本网段(假设192.168.1.0/24)所有的机器发送广播数据包,即向192.168.1.255发送,来启动所有可以启动的从进程。
我写了这样一个xinetd配置文件。但试了试,从进程没能被启动,不知哪点没考虑周到。请大虾指教

  1. service rcatd
  2. {
  3.    disable   = no
  4.    port        = 5000
  5.    socket_type = dgram
  6.    protocol    = udp
  7.    wait        = yes
  8.    user        = andy
  9.    only_from   = 192.168.1.0
  10.    server      = /home/andy/cluster/bin/slave
  11. }
复制代码



如何检查xinetd所监听的端口?我netstat -atn看不到5000端口。

这里附加上主进程发送广播数据包的代码段,为简洁起见,部分变量声明在此简略

  1.   char *p;
  2.   unsigned char bcaddr[4] = {0xC0, 0xA8, 0x01, 0xFF}; /*192.168.1.255 */

  3.   /*
  4.    ** establish a UDP broadcast socket
  5.    */
  6.   b_fd = socket (AF_INET, SOCK_DGRAM, 0);
  7.   bzero(&broadcast, sizeof(broadcast));
  8.   broadcast.sin_family = AF_INET;
  9.   broadcast.sin_port = htons (BROADCAST);
  10.   memcpy(&broadcast.sin_addr, bcaddr, 4);
  11.   setsockopt (b_fd, SOL_SOCKET, SO_BROADCAST, (char *) &opt, sizeof (opt));

  12.    / *
  13.    * start up all remote slave services
  14.    */
  15.   gethostname (hostname, sizeof (hostname));
  16.   if ((p = strchr (hostname, '.')) != NULL)
  17.     {
  18.       *p = '\0';      /* trunc .domainname */
  19.     }
  20.   sendto (b_fd, hostname, strlen (hostname) + 1, 0,
  21.      (struct sockaddr *) &broadcast, len);
  22.   close (b_fd);
复制代码
发表于 2004-7-18 19:58:17 | 显示全部楼层
从机器上要监听才知道主机器传来的信息呀。
 楼主| 发表于 2004-7-18 20:01:52 | 显示全部楼层
是的呀,我用超级服务器xinetd监听嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表