234,7 → 234,7 |
int main( int argc, char * argv[] ){ |
ERROR_DECLARE; |
|
int size = 1024; |
size_t size = 1024; |
int verbose = 0; |
char * reply = NULL; |
sock_type_t type = SOCK_DGRAM; |
245,7 → 245,7 |
int address_length; |
char address_string[ INET_ADDRSTRLEN ]; |
char * data; |
int length; |
size_t length; |
int index; |
size_t reply_length; |
int value; |
265,13 → 265,15 |
return EOK; |
break; |
case 'p': ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "port number", 0 )); |
address.sin_port = value; |
address.sin_port = ( uint16_t ) value; |
break; |
case 'r': ERROR_PROPAGATE( parse_parameter_string( argc, argv, & index, & reply, "reply string", 0 )); |
break; |
case 's': ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & size, "receive size", 0 )); |
case 's': ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "receive size", 0 )); |
size = (value >= 0 ) ? ( size_t ) value : 0; |
break; |
case 't': ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, ( int * ) & type, "socket_type", 0, parse_socket_type )); |
case 't': ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & value, "socket_type", 0, parse_socket_type )); |
type = ( sock_type_t ) value; |
break; |
case 'v': verbose = 1; |
break; |
279,19 → 281,21 |
ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & count, "received count", 8 )) |
}else if( str_lcmp( argv[ index ] + 2, "family=", 7 ) == 0 ){ |
ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & value, "protocol family", 9, parse_protocol_family )); |
address.sin_family = value; |
address.sin_family = ( uint16_t ) value; |
}else if( str_lcmp( argv[ index ] + 2, "help", 5 ) == 0 ){ |
print_help(); |
return EOK; |
}else if( str_lcmp( argv[ index ] + 2, "port=", 5 ) == 0 ){ |
ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "port number", 7 )); |
address.sin_port = value; |
address.sin_port = ( uint16_t ) value; |
}else if( str_lcmp( argv[ index ] + 2, "reply=", 6 ) == 0 ){ |
ERROR_PROPAGATE( parse_parameter_string( argc, argv, & index, & reply, "reply string", 8 )); |
}else if( str_lcmp( argv[ index ] + 2, "size=", 5 ) == 0 ){ |
ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & size, "receive size", 7 )); |
ERROR_PROPAGATE( parse_parameter_int( argc, argv, & index, & value, "receive size", 7 )); |
size = (value >= 0 ) ? ( size_t ) value : 0; |
}else if( str_lcmp( argv[ index ] + 2, "type=", 5 ) == 0 ){ |
ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, ( int * ) & type, "socket_type", 7, parse_socket_type )); |
ERROR_PROPAGATE( parse_parameter_name_int( argc, argv, & index, & value, "socket_type", 7, parse_socket_type )); |
type = ( sock_type_t ) value; |
}else if( str_lcmp( argv[ index ] + 2, "verbose", 8 ) == 0 ){ |
verbose = 1; |
}else{ |
335,10 → 339,11 |
|
while( count ){ |
address_length = sizeof( address ); |
length = recvfrom( socket_id, data, size, 0, ( struct sockaddr * ) & address, & address_length ); |
if( length < 0 ){ |
fprintf( stderr, "Socket receive error %d\n", length ); |
value = recvfrom( socket_id, data, size, 0, ( struct sockaddr * ) & address, & address_length ); |
if( value < 0 ){ |
fprintf( stderr, "Socket receive error %d\n", value ); |
}else{ |
length = ( size_t ) value; |
if( verbose ){ |
if( ERROR_OCCURRED( inet_ntop( address.sin_family, ( uint8_t * ) & address.sin_addr.s_addr, address_string, sizeof( address_string )))){ |
fprintf( stderr, "Received address error %d\n", ERROR_CODE ); |
348,7 → 353,7 |
printf( "Received from %s:%d\n%s\n", address_string, address.sin_port, data ); |
} |
} |
if( ERROR_OCCURRED( sendto( socket_id, reply ? reply : data, reply ? reply_length : ( size_t ) length, 0, ( struct sockaddr * ) & address, sizeof( address )))){ |
if( ERROR_OCCURRED( sendto( socket_id, reply ? reply : data, reply ? reply_length : length, 0, ( struct sockaddr * ) & address, sizeof( address )))){ |
fprintf( stderr, "Socket send error %d\n", ERROR_CODE ); |
} |
} |