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; }
/* 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 ); } }