论坛风格切换切换到宽版
  • 958阅读
  • 6回复

[问题求助]发送ripv2的查询路由表消息,为什么收不到应答呢, 代码贴在下面了 [复制链接]

上一主题 下一主题
离线hack119.
 
发帖
1875
C币
-60755
威望
362
贡献值
1
银元
-1
铜钱
4278
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
#.include <stdio.h>    健康
#include <s.tdlib.h>             汽车
#inc.lude <string.h>           鲜花
#include <sys/t.ypes.h>           建材
#include <netinet./in.h>教育
#.include <sys/socket.h>    美容
#include <arp.a/inet.h>          婚庆
#include <unis.td.h>.
#i.nclude <errno.h>.
void .  MTimeOuts(int   msec.)                女人
{    
          .  struct   timeval   timeout; .    健康
.               .
      .  memset(&timeout,   0.,   sizeof(struct   timeval));     .
    .            if.(msec   >=   1000)         美容
.      .               {   (广告)
                            timeout.tv_s.ec .  =   msec/1000;     .
                            .  timeout.tv_usec   =.   0;              建材
                                }  .. .
       .           else    . (        游戏          )
                   .   .  {                电子
                      .       . timeout.tv_sec =   0;         美容
                          .      timeout.tv_usec =   .msec;   .
                         .         } .  教育
        .              .
  .                  select(0,   NULL,   NULL,   NULL,   .&timeout);     投资
}  




typedef enum{
    STATIC,
    DHCP,
    PPPoE
} WAY;


int ma.in(int argc,. char *argv[])服务器
{
int sock;

WAY .way = DHCP;教育
way = 1;
e.xtern int errno;.
struct soc.kaddr_i.n toAddr;.
sock = socket(AF_I.NET,SOCK_DGRAM,0).;虚拟主机
if(sock < 0)
{
exit(1);
}
struct sockaddr_in bAd.dr;投资
struct sockaddr._in cli;健康
memset(&.bAddr, 0, si.zeof(bAddr));投资
bAd.dr..sin_family =  AF_INET;电影
bAdd.r..sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr("192.168.0.55");--- 印刷
bAddr.s.in_port = h.tons(520);外贸
int ret  = bind(sock, (struct sockaddr *)&bAddr, sizeof(bAddr.)).;电影
if(ret != 0)
{
    
    ch.ar * mesg = strerror(.errno);           鲜花
      print.f("Mesg:.%s\n",mesg);  --- 印刷
}
struct .ip_mreq mreq;--- 印刷
if (inet_aton(".224.0.0.9", &mreq.imr_multiaddr) < 0).            鲜花
{
    perror("inet_a.ton");           建材
    return -1;
}
mreq..imr_interface..s_addr = htonl(INADDR_ANY);           建材

ret = setsockopt(sock, IPPROTO_IP, IP_A.DD_MEMBERSHIP,&mreq,sizeof(mreq.));             电子
if(ret != 0)
{
    printf("setso.ck error code=%d\n", er.rno);投资
    char * mesg = strerror(e.r.rno);(        游戏          )
.     pr.intf("Mesg:%s\n",mesg);  <性病>
      
    return -1;
}
char buff[128].;<性病>
memset(buff, .0x00, sizeof(buff.));           鲜花
memset(.&.toAddr,0,sizeof(toAddr));.

toAddr.si.n_family=AF_INE.T;<性病>
toAddr.sin_addr.s_addr=(inet_ad.dr("224.0..0.9"));.
/./toAddr.sin_addr.s_addr=(inet_addr(".210.82.95.233"));           建材
toAddr.sin_p.ort = .htons(520);
buff[0] = .0x01;电影
buff[1]= 0x02;
//buff[4]= 0xff.;.
//buff[5]= 0xff.;    健康

//bu.ff[7]= 0x02;投资
//strc.py(buff+8, ".password");.
//buff.[25]= 0x02;--------------彩票

//.buff[27]= 0xaa;           女人

//buf.f[28]= 192;    外汇
//buf.f[29]= 168;电脑
//buff[30]= 0;
//.buff[31]= 55;.


//buff[3.2]= 255;.
//buff[33.]= 255;            杀毒
//.buff[34]= 255;           鲜花
//buff[35]= 0;


buff[23] = 0x1.0;(广告)
time_t now =. time(NULL);    外汇
time_t. last =time(NULL);健康
int count = 0;
char buf[128];
int r = 0;
if(1)
{
    ret = 24;
    if(sen.dto(s.ock,buff, 24,0,(s.truct sockaddr*)&toAddr,sizeof(toAddr)) != ret)<性病>
    {
        printf("Sen.ding incomplete...\n.");[成人用品]
    
    }
    int i = 0;
    count = 0;
    if ((.r = recvfrom(sock., buf, 128, 0, (struct sockaddr *)&cli, &count)) < 0).           婚庆
    {
        printf("rec.v no da.ta");             电子
    }else
    {
        f.or(i= 0; i< r; .i++).
        {
     .        printf("%02x ", (un.signed char)buf);域名
        }
        printf("\ngre.at\n".);    外汇
    }
    //sle.ep(1);              乙肝
    //count++;
    //usl.eep(600);电影
    MTimeOuts(1000.);.
}
    close.(sock);           鲜花
    return 1;
}

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线test1234a.
发帖
1987
C币
-235433
威望
389
贡献值
1
银元
0
铜钱
4621
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
strace一下运行过程

离线oky3914.
发帖
2173
C币
-198637
威望
427
贡献值
1
银元
-3
铜钱
4838
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
strace, 是什么意思, 我tcpdump ,发现数据包确实是发出去了。 在局域网内的别的机器上也可以抓到request的包。

发帖
1996
C币
-235513
威望
378
贡献值
1
银元
-2
铜钱
4490
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
我还有一点不明白的是, 我发送vipv2的请求包出去, 运行在公网上的路路由器,都给我一个回答。(支持ripv2)的。  我理解的有问题吗?

发帖
2065
C币
-235577
威望
384
贡献值
1
银元
-1
铜钱
4528
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
帮LZ顶下,我最近也在看RIP,老大要我改一个bug,头痛啊。我还从来没有抓到过request包,抓到得都是response包。更新是30秒,你看看其他机器路由表改变了么?

离线wscxyy.
发帖
2093
C币
-140091
威望
377
贡献值
1
银元
-4
铜钱
4609
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
还有一种可能就是你的机器防火墙或者网关把RIP包给DROP掉了,这种情况我碰到过,呵呵,两个路由器,一个用做网关,结果网关那个路由器就是收不到另外一个路由器的RIP包,LZ试试吧,好运

离线pchhh.
发帖
1960
C币
-235489
威望
365
贡献值
1
银元
0
铜钱
4343
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
Re:发送ripv2的查询路由表消息,为什么收不到应答呢,
有谁感兴趣的话,可以加我。咱们一块讨论一下
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个