38,7 → 38,6 |
#include <stdio.h> |
#include <string.h> |
#include <task.h> |
#include <time.h> |
|
#include "../../include/in.h" |
#include "../../include/in6.h" |
84,10 → 83,10 |
*/ |
int parse_socket_type( const char * name ); |
|
void refresh_data( char * data, size_t size ); |
void refresh_data( char * data, int size ); |
int sockets_create( int verbose, int * socket_ids, int sockets, int family, sock_type_t type ); |
int sockets_close( int verbose, int * socket_ids, int sockets ); |
int sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen ); |
int sockets_bind( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen ); |
int sockets_sendto( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen, char * data, int size, int messages ); |
int sockets_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages ); |
int sockets_sendto_recvfrom( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t * addrlen, char * data, int size, int messages ); |
139,8 → 138,8 |
return ESOCKTNOSUPPORT; |
} |
|
void refresh_data( char * data, size_t size ){ |
size_t length; |
void refresh_data( char * data, int size ){ |
int length; |
|
// fill the data |
length = 0; |
186,16 → 185,17 |
return EOK; |
} |
|
int sockets_connect( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen ){ |
int sockets_bind( int verbose, int * socket_ids, int sockets, struct sockaddr * address, socklen_t addrlen ){ |
ERROR_DECLARE; |
|
int index; |
|
if( verbose ) printf( "\tConnect\t" ); |
if( verbose ) printf( "\tBind\t" ); |
fflush( stdout ); |
for( index = 0; index < sockets; ++ index ){ |
if( ERROR_OCCURRED( connect( socket_ids[ index ], address, addrlen ))){ |
socket_print_error( stderr, ERROR_CODE, "Socket connect: ", "\n" ); |
if( ERROR_OCCURRED( bind( socket_ids[ index ], address, addrlen ))){ |
printf( "Socket %d (%d) error:\n", index, socket_ids[ index ] ); |
socket_print_error( stderr, ERROR_CODE, "Socket bind: ", "\n" ); |
return ERROR_CODE; |
} |
if( verbose ) print_mark( index ); |
306,8 → 306,6 |
char * data; |
int value; |
int index; |
struct timeval time_before; |
struct timeval time_after; |
|
printf( "Task %d - ", task_get_id()); |
printf( "%s\n", NAME ); |
427,28 → 425,28 |
|
if( verbose ) printf( "1 socket, 1 message\n" ); |
|
if( ERROR_OCCURRED( gettimeofday( & time_before, NULL ))){ |
fprintf( stderr, "Get time of day error %d\n", ERROR_CODE ); |
return ERROR_CODE; |
} |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1, family, type )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
if( verbose ) printf( "\tOK\n" ); |
|
if( type == SOCK_DGRAM ){ |
/* ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1 )); |
ERROR_PROPAGATE( sockets_bind( verbose, socket_ids, 1, address, addrlen )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
*/ |
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, 1 )); |
*/ ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
if( verbose ) printf( "\tOK\n" ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, 1, address, addrlen, data, size, 1 )); |
*/ ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, 1, address, addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
if( verbose ) printf( "\tOK\n" ); |
456,18 → 454,18 |
if( verbose ) printf( "1 socket, %d messages\n", messages ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, messages )); |
*/ ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
if( verbose ) printf( "\tOK\n" ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, 1, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, 1, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, 1, address, addrlen, data, size, messages )); |
*/ ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, 1, address, addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_recvfrom( verbose, socket_ids, 1, address, & addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, 1 )); |
if( verbose ) printf( "\tOK\n" ); |
478,19 → 476,24 |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
if( verbose ) printf( "\tOK\n" ); |
|
/* ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets )); |
ERROR_PROPAGATE( sockets_bind( verbose, socket_ids, sockets, address, addrlen )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
*/ |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, 1 )); |
*/ ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
if( verbose ) printf( "\tOK\n" ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, sockets, address, addrlen, data, size, 1 )); |
*/ ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, sockets, address, addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, 1 )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
if( verbose ) printf( "\tOK\n" ); |
498,30 → 501,66 |
if( verbose ) printf( "%d sockets, %d messages\n", sockets, messages ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, messages )); |
*/ ERROR_PROPAGATE( sockets_sendto_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
if( verbose ) printf( "\tOK\n" ); |
|
ERROR_PROPAGATE( sockets_create( verbose, socket_ids, sockets, family, type )); |
if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, addrlen )); |
/* if( type == SOCK_STREAM ){ |
ERROR_PROPAGATE( sockets_connect( verbose, socket_ids, sockets, address, & addrlen )); |
} |
ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, sockets, address, addrlen, data, size, messages )); |
*/ ERROR_PROPAGATE( sockets_sendto( verbose, socket_ids, sockets, address, addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_recvfrom( verbose, socket_ids, sockets, address, & addrlen, data, size, messages )); |
ERROR_PROPAGATE( sockets_close( verbose, socket_ids, sockets )); |
if( verbose ) printf( "\tOK\n" ); |
} |
/* |
if( type == SOCK_STREAM ){ |
// TODO remove tests |
address_in->sin_addr.s_addr = 0x3f26b75a; |
address_in->sin_port = htons( 80 ); |
if( ERROR_OCCURRED( connect( listening_id, address, sizeof( struct sockaddr_in )))){ |
socket_print_error( stderr, ERROR_CODE, "Socket connect: ", "\n" ); |
return ERROR_CODE; |
} |
if( ERROR_OCCURRED( send( listening_id, "ahoj nekdo", 10, 0 ))){ |
socket_print_error( stderr, ERROR_CODE, "Socket send: ", "\n" ); |
return ERROR_CODE; |
} |
value = recv( socket_id, data, size, 0 ); |
fprintf( stderr, "Socket receive: %d\n", value ); |
if( ERROR_OCCURRED( send( listening_id, "ahoj nekdo", 10, 0 ))){ |
socket_print_error( stderr, ERROR_CODE, "Socket send: ", "\n" ); |
return ERROR_CODE; |
} |
value = recvfrom( socket_id, data, size, 0, address, & addrlen ); |
fprintf( stderr, "Socket receive: %d\n", value ); |
|
if( ERROR_OCCURRED( gettimeofday( & time_after, NULL ))){ |
fprintf( stderr, "Get time of day error %d\n", ERROR_CODE ); |
if( ERROR_OCCURRED( closesocket( listening_id ))){ |
socket_print_error( stderr, ERROR_CODE, "Close socket: ", "\n" ); |
return ERROR_CODE; |
} |
listening_id = socket( family, type, 0 ); |
if( listening_id < 0 ){ |
socket_print_error( stderr, listening_id, "Socket create: ", "\n" ); |
return listening_id; |
} |
|
if( ERROR_OCCURRED( listen( listening_id, 3 ))){ |
socket_print_error( stderr, ERROR_CODE, "Socket listen: ", "\n" ); |
return ERROR_CODE; |
} |
}else{ |
socket_id = listening_id; |
} |
if( ERROR_OCCURRED( bind( listening_id, address, addrlen ))){ |
socket_print_error( stderr, ERROR_CODE, "Socket bind: ", "\n" ); |
return ERROR_CODE; |
} |
|
if( verbose ) printf( "\tOK\n" ); |
|
printf( "Tested in %d microseconds\n", tv_sub( & time_after, & time_before )); |
|
*/ |
if( verbose ) printf( "Exiting\n" ); |
|
return EOK; |