|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 940 (0x3ac)
Types: TextFile
Names: »serv.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec8/inet/serv.c«
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include "service.h"
int comm_chan;
char in_buf[BUFSIZ];
main()
{
if ( (comm_chan = setup_server( SERV_NAME, SERV_PORT )) < 0 ) {
perror( "setup_server" );
exit(1);
}
for ( ;; ) {
struct sockaddr_in from;
int fromlen = sizeof(from);
int r;
if ( (r = recvfrom( comm_chan, in_buf, sizeof(in_buf), 0,
(struct sockaddr *) &from, &fromlen )) < 0 ) {
perror( "receive" );
continue;
}
/* Data received, display it. */
printf( "From " );
print_bytes( (char *) &from, sizeof(from) );
printf( ": %.*s\n", r, in_buf );
fflush(stdout);
/* Reply to the bugger. */
#define MSG "Hello."
sendto(comm_chan,MSG,sizeof(MSG),0,(struct sockaddr *)&from,fromlen);
}
}
print_bytes( p, n )
unsigned char *p;
int n;
{
printf( "[" );
for ( ; n; --n, ++p ) {
printf( "%d", *p );
if ( n != 1 ) printf( "," );
}
printf( "]" );
}