The following C code is an example for an ONLINE client. It can be started after an ONLINE session prepared for a connect with, e.g. server/asynch.
/* Compile with: gcc -o client client.c Usage, e.g.: ./client -hhasexp -p7777 */ #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <stdio.h> #include <ctype.h> #include <netdb.h> #include <errno.h> #include <stdlib.h> #include <string.h> int read_fd( int s, char *buffer, int len_max); int trim( char *); main( int argc, char *arg[]) { int s, i; char buffer[1000]; int len_max = 1000; struct sockaddr_in sin; struct hostent *hp; struct servent *sp; fd_set fdset; char host_name[80]; int port_no; strcpy( host_name, "hasXXX.desy.de"); port_no = 7777; if( argc > 1) { for( i=1; i < argc; i++) { if( arg[i][0] != '-') { continue; } switch( toupper( arg[i][1])) { case '?': fprintf( stdout, "\n Usage:\n\n"); fprintf( stdout, " -? Help \n"); fprintf( stdout, " -hhostname \n"); fprintf( stdout, " -pport_no \n"); goto finish; case 'H': strcpy( host_name, arg[i] + 2); break; case 'P': port_no = atoi( arg[i] + 2); break; } } } fprintf( stdout, " Connecting to %s port %d until 'bye'\n", host_name, port_no); if( (hp = gethostbyname( host_name)) == 0) { fprintf(stderr, "host %s unknown\n", host_name); goto finish; } if( (s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) { fprintf( stderr, " socket: %s \n", strerror( errno)); goto finish; } bcopy(hp->h_addr, &sin.sin_addr, hp->h_length); sin.sin_family = AF_INET; sin.sin_port = htons(port_no); if ( connect(s, (struct sockaddr *) &sin, sizeof (sin)) < 0) { fprintf( stderr, " Connect: %s \n", strerror( errno)); goto finish; } FD_ZERO( &fdset ); FD_SET( s , &fdset ); while( 1) { i = read( fileno( stdin), buffer, len_max); buffer[i] = 0; trim( buffer); if( !strcasecmp( buffer, "BYE")) { goto finish; } send(s, buffer, strlen(buffer), 0); if( !strcmp( buffer, "bye")) { break; } if(select( 32, &fdset, 0 , 0 , 0)) { i = recv(s , buffer, len_max , 0 ); buffer[i] = 0; printf( "Reply: %s", buffer); } } finish: exit(0); } /* remove leading and trailing white space */ int trim( char *buffer) { char cuffer[1000]; int i; while( buffer[ strlen( (const char*) buffer) - 1] <= ' ') { buffer[ strlen(buffer) - 1] = 0; } strcpy( cuffer, buffer); for( i = 0; i < strlen((const char*) buffer); i++) { if( buffer[i] > ' ') { break; } } strcpy( cuffer, buffer + i); strcpy( buffer, cuffer); }