免费注册 查看新帖 |

Chinaunix

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

[C] 一段端口扫描的代码,原始套接字,怎么老是recvfrom收不到呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-17 18:59 |只看该作者 |倒序浏览
static int FIN_scan(const char *ip_addr, const unsigned short port)
{
    struct sockaddr_in addr;
    int sockfd;
    fd_set fdset;
    struct timeval timeout;
    struct tcphdr *tcp;
    struct ip *ip;
    char buf[sizeof(struct tcphdr) + sizeof(struct ip)];
    int buflen, addrlen;

    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = inet_addr("119.75.216.30");    //119.75.216.30百度


    timeout.tv_sec = TIME_OUT;
    timeout.tv_usec = 0;

    memset(buf, 0, sizeof(buf));
    sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
    ip = (struct ip *)buf;
    tcp = (struct tcphdr *)(buf + sizeof(struct ip));
    buflen = sizeof(struct tcphdr) + sizeof(struct ip);
    addrlen = sizeof(struct sockaddr_in);

    tcp->source = htons(55555);
    tcp->dest = htons(port);
    tcp->fin = 1;
    tcp->doff = 5;

    if (sendto(sockfd, buf, buflen, 0, (struct sockaddr *)&addr, addrlen)
        == buflen)
        printf("sendto successn");

    if (recvfrom(sockfd, buf, buflen, 0, (struct sockaddr *)&addr,
         &addrlen) == buflen)
        printf("recvfrom successn"); //recvfrom收不到

    return 1;
}

论坛徽章:
0
2 [报告]
发表于 2009-11-18 09:42 |只看该作者
man sockaddr_ll

论坛徽章:
0
3 [报告]
发表于 2009-11-18 10:57 |只看该作者

回复 #2 hijohnny 的帖子

嗯  谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP