为什么我发送的icmp包没有返回

[复制链接]
查看11 | 回复0 | 2011-6-16 03:06:02 | 显示全部楼层 |阅读模式
intping(char*ip)
{
        SOCKETsock=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
        if(sock==INVALID_SOCKET)
        {
                cout\"createsocketerror!\"endl;
                return0;
        }
       
structsockaddr_intoAddr,fromAddr;
toAddr.sin_family=AF_INET;
toAddr.sin_addr.s_addr=inet_addr(ip);
       
        staticECHOREQUESTsendICMP;
        staticECHOREPLYreceIP;
        staticnId=1;
        staticnSeq=1;
        intnRet;
       
        //填写回送请求信息
sendICMP.icmpHdr.Type=ICMP_ECHOREQ;
        sendICMP.icmpHdr.Code=0;
        sendICMP.icmpHdr.Checksum=0;
        sendICMP.icmpHdr.ID=nId;
        sendICMP.icmpHdr.Seq=nSeq;
       
//        while(1){
                nRet=sendto(sock,        (LPSTR)
       
                coutnRetendl;
//        }
        intnlen=sizeof(SOCKADDR_IN);
        nRet=recvfrom(sock,        (LPSTR)
        coutnRetendl;
        return0;
}
//发送时返回一个45的值,然后就一直停在recefrom()那里不动
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行