示例#1
0
int main(int argc, char* argv)
{
    SOCKET s;
    struct protoent *pp;
    int rc;
    char icmpdg[1024];
    
    pp = getprotobyname("icmp");
    if (pp == NULL){
        printf("getprotobyname failed, errno %d.\n", errno);
        exit(errno);
    }
    
    s = socket(AF_INET, SOCK_RAW, pp->p_proto);
    if (!IS_VALID_SOCK(s)){
        printf("socket RAW failed, errno %d.\n", errno);
        exit(errno);
    }
    
    for(;;)
    {
        rc = recvfrom(s, icmpdg, sizeof(icmpdg), 0, NULL, NULL);
        if (rc < 0){
            printf("recvfrom failed, errno %d.\n", errno);
            exit(errno);
        }
        //printf("(%d bytes)%s\n", rc, icmpdg);
        print_dg(icmpdg, rc);
    }
    
    return 0;
}
示例#2
0
/* main - initialization and event loop */
int main( int argc, char **argv )
{
	SOCKET s;
	struct protoent *pp;
	int rc;
	char icmpdg[ 1024 ];

	INIT();
	pp = getprotobyname( "icmp" );
	if ( pp == NULL )
		error( 1, errno, "getprotobyname failed" );
	s = socket( AF_INET, SOCK_RAW, pp->p_proto );
	if ( !isvalidsock( s ) )
		error( 1, errno, "socket failed" );

	for ( ;; )
	{
		rc = recvfrom( s, icmpdg, sizeof( icmpdg ), 0,
			NULL, NULL );
		if ( rc < 0 )
			error( 1, errno, "recvfrom failed" );
		print_dg( icmpdg, rc );
	}
}