[TUHS] networking on unix before uucp

Larry McVoy lm at mcvoy.com
Sat Aug 23 03:51:05 AEST 2014


On Sat, Aug 23, 2014 at 04:11:42AM +1000, Dave Horsfall wrote:
> On Fri, 22 Aug 2014, Ronald Natalie wrote:
> 
> > I hate the socket interface, at least once you use it's goofy interface 
> > on UNIX, it works mostly like a file descriptor.
> 
> In a previous slavery we had a simple socket library; the application did 
> little more than say whether it was a client or a server etc.  I wish I 
> could steal that code now...

lmbench has one:

/*
 * Get a TCP socket, bind it, figure out the port,
 * and advertise the port as program "prog".
 *
 * XXX - it would be nice if you could advertise ascii strings.
 */
int
tcp_server(int prog, int rdwr)

/*
 * Unadvertise the socket
 */
int
tcp_done(int prog)

/*
 * Accept a connection and return it
 */
int
tcp_accept(int sock, int rdwr)

/*
 * Connect to the TCP socket advertised as "prog" on "host" and
 * return the connected socket.
 *
 * Hacked Thu Oct 27 1994 to cache pmap_getport calls.  This saves
 * about 4000 usecs in loopback lat_connect calls.  I suppose we
 * should time gethostbyname() & pmap_getprot(), huh?
 */
int
tcp_connect(char *host, int prog, int rdwr)

void
sock_optimize(int sock, int flags)

int
sockport(int s)

I swiped all that code and we use it in bitkeeper.

        sock = tcp_server(0, port, 0);
        if (sock == -1) exit(1);
        verbose((stderr, "started server on port %d\n", sockport(sock)));

        while (1) {
                if ((nsock = tcp_accept(sock)) < 0) continue;
                peer = peeraddr(nsock);
                verbose((stderr, "connection from %s\n", peer));
                fin = fdopen(nsock, "r");
                fout = fdopen(nsock, "w");
                info_cmds(fin, fout, dashx);
                fclose(fin);
                fclose(fout);
                verbose((stderr, "%s is done\n", peer));
        }

-- 
---
Larry McVoy            	     lm at mcvoy.com             http://www.mcvoy.com/lm 



More information about the TUHS mailing list