免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1574 | 回复: 0
打印 上一主题 下一主题

RPC编程:关于广播包的编程:跪求大神!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-05 11:27 |只看该作者 |倒序浏览
大神们!!!我现在用在linux上用RPC编程,在客户端用clnt_broadcas()函数向以太网中发广播包,服务器接收广播包并用svc_sendreply()函数返回自己的信息,这样客户端就可以知道这个以太网上所有的服务器的IP信息等等。可是客户端的广播包发过后有的主机可以接受,有的不可以接受,这是怎么回事呀,求大神指点!!!!

贴一段小代码:
  1. 客户端: rpc_stat    = clnt_broadcast(DEVICE_CORE, DEVICE_CORE_VERSION, NULLPROC,
  2.                       xdr_void, (char *)NULL,                           //in  params
  3.                                   (xdrproc_t)xdr_wrapstring, (caddr_t) &clnt_res,   //ret params
  4.                                   coreresult);


  5. 服务器:
  6. static void device_core_1(struct svc_req *rqstp, SVCXPRT *transp)
  7. {
  8.         union {
  9.                 Create_LinkParms      create_link_1_arg;
  10.                 Device_WriteParms     device_write_1_arg;
  11.                 Device_ReadParms      device_read_1_arg;
  12.                 Device_GenericParms   device_readstb_1_arg;
  13.                 Device_GenericParms   device_trigger_1_arg;
  14.                 Device_GenericParms   device_clear_1_arg;
  15.                 Device_GenericParms   device_remote_1_arg;
  16.                 Device_GenericParms   device_local_1_arg;
  17.                 Device_LockParms      device_lock_1_arg;
  18.                 Device_Link           device_unlock_1_arg;
  19.                 Device_EnableSrqParms device_enable_srq_1_arg;
  20.                 Device_DocmdParms     device_docmd_1_arg;
  21.                 Device_Link           destroy_link_1_arg;
  22.                 Device_RemoteFunc     create_intr_chan_1_arg;
  23.         } argument;
  24.         char          *result, corereply[20];
  25.         //bool_t     (*xdr_argument)(), (*xdr_result)();
  26.         xdrproc_t      xdr_argument, xdr_result;
  27.         char        *(*local)(DOTS);

  28. #ifdef MULTITHREAD
  29.         DWORD TID           = 0;
  30.         HANDLE threadHandle = NULL;
  31.         struct call_params *params;
  32. #endif

  33.         switch (rqstp->rq_proc)
  34.         {
  35.                 case NULLPROC:
  36.             //result   = lxiInstrAttr[0].DevName;
  37.             strcpy(corereply,"Core:CE41 LXI-VXI");
  38.                         result     = corereply;
  39.                         result[17] = 0;
  40.                         xdr_result = (xdrproc_t)xdr_wrapstring; //xdr_char;  //xdr_void; //xdr_wrapstring;
  41.                         //printf("\n%s", result);
  42.                         (void)svc_sendreply(transp, xdr_result, (caddr_t)&result);
  43.                         //break;
  44.                         return;

  45.                 case create_link:
  46.                         xdr_argument = (xdrproc_t)xdr_Create_LinkParms;
  47.                         xdr_result   = (xdrproc_t)xdr_Create_LinkResp;
  48.                         local        = (char *(*)(DOTS)) create_link_svc_1;
  49.                         break;

  50.                 case device_write:
  51.                         xdr_argument = (xdrproc_t)xdr_Device_WriteParms;
  52.                         xdr_result   = (xdrproc_t)xdr_Device_WriteResp;
  53.                         local        = (char *(*)(DOTS)) device_write_svc_1;
  54.                         break;

  55.                 case device_read:
  56.                         xdr_argument = (xdrproc_t)xdr_Device_ReadParms;
  57.                         xdr_result   = (xdrproc_t)xdr_Device_ReadResp;
  58.                         local        = (char *(*)(DOTS)) device_read_svc_1;
  59.                         break;
  60. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP