#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <errno.h>
/* LOCAL_UDP_PORT and FOREIGN_UDP_PORT must be defined at compile time */
#define FOREIGN_ADDR "192.168.135.2"
unsigned char test_message[ 1024 ] = { "abcdefghijklmnopqrstuvwxyz" };
unsigned char rcv_message[ 1024 ];
#define ATTEMPT( x ) if ( (x) < 0 ) \
{ \
perror( "\nERROR: apinull.c " ); \
printf( "Died at line %d, errno= %d.\n", \
__LINE__, errno ); \
exit( 1 ); \
}
int main()
{
int iTotSize;
int iSockOpt;
int iLoopCount;
struct sockaddr_in l_addr;
struct sockaddr_in f_addr;
int sock = socket( AF_INET, SOCK_DGRAM, 0);
bzero( (char *)&l_addr, sizeof( struct sockaddr_in ) );
bzero( (char *)&f_addr, sizeof( struct sockaddr_in ) );
l_addr.sin_family = f_addr.sin_family = AF_INET;
l_addr.sin_port = htons( LOCAL_UDP_PORT );
f_addr.sin_port = htons( FOREIGN_UDP_PORT );
f_addr.sin_addr.s_addr = inet_addr( FOREIGN_ADDR );
ATTEMPT( bind( sock, (struct sockaddr *)&l_addr, sizeof( l_addr ) ) )
ATTEMPT( connect( sock, (struct sockaddr *)&f_addr, sizeof( f_addr ) ) )
iTotSize = strlen( test_message );
printf( "apinull : sending %d byte string: %s, to port 0x%x.\n",
iTotSize, test_message, FOREIGN_UDP_PORT );
ATTEMPT( write( sock, &test_message, iTotSize ) );
bzero( &rcv_message, sizeof( rcv_message ) );
ATTEMPT( iTotSize = read( sock, &rcv_message, sizeof( rcv_message ) ) );
printf( "apinull : received %d byte string: %s.\n",
iTotSize, rcv_message );
close(sock);
exit(0);
return(0);
}