DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦12003509f⟧ TextFile

    Length: 1330 (0x532)
    Types: TextFile
    Names: »sockets.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Bj/sockets.c« 

TextFile

#include "defs.h"

char *getenv();

/*
 * Make connection to host running the blackjack dealer server,
 * return fd of new socket.
 */
int make_con(servhost)
char *servhost;				/* name of host running server */
{
	int s;
	struct hostent *host;
	struct servent *dealer;
	struct sockaddr_in sockaddr;

	if ((host = gethostbyname(servhost)) == NULL)  {
		perror("gethostbyname");
		exit(1);
	}
	if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0)  {
		perror("socket");
		exit(1);
	}
	bzero((char *) &sockaddr, sizeof (sockaddr));
	bcopy(host->h_addr, (char *) &sockaddr.sin_addr, host->h_length);
	sockaddr.sin_family = AF_INET;
#ifdef ROOTPRIV
	if ((dealer = getservbyname(SERVICE, PROTO)) == NULL)  {
		fputs("blackjack: service not found\n", stderr);
		exit(1);
	}
	sockaddr.sin_port = htons(dealer->s_port);
#else
	sockaddr.sin_port = htons(PORT);
#endif
	if (connect(s, (char *) &sockaddr, sizeof(sockaddr)) < 0)  {
		perror("connect to dealer");
		exit(1);
	}
	return(s);
}

/*
 * Send host your name and machine (name@machine)
 */
void send_name(s)
int s;					/* socket to talk to host on */
{
	char *name, host[SLEN], buf[SLEN];

	if ((name = getenv("BJ")) == NULL)
		if ((name = getenv("NAME")) == NULL)
			name = getenv("USER");
	(void) gethostname(host, SLEN);
	(void) sprintf(buf, "%s@%s", name, host);
	sockwrite(s, buf);
}