Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!nrl-cmf!ames!ucbcad!ucbvax!CLUTX.CLARKSON.EDU!nelson From: nelson@CLUTX.CLARKSON.EDU (Russell Nelson) Newsgroups: comp.protocols.tcp-ip.ibmpc Subject: Berzerkeley sockets Message-ID: <8711101439.AA03034@clutx.clarkson.edu> Date: Tue, 10-Nov-87 09:39:19 EST Article-I.D.: clutx.8711101439.AA03034 Posted: Tue Nov 10 09:39:19 1987 Date-Received: Thu, 12-Nov-87 20:48:36 EST References: <282759.871109.PAP4@AI.AI.MIT.EDU> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet Lines: 17 Urgent data is a bit of a problem, because it requires a signal() (or sigvec()) facility. This is non-trivial under DOS. Also, it would be nice if sockets were MS-DOS file handles, and could be inherited by forked/spawned processes, like inetd and rexecd do... As for select(), it really is quite handy. It is effectively the only way to implement telnet (sans upcalls), unless you use ioctl/FIONBIO, which is another can of worms... If anyone is into a really gross hack, I know how to create device drivers on the fly. Using this scheme, every time the application created a new socket, the underlying Internet driver could create a new device, open it, set it to raw mode, and pass it back to the application. Then all read/writes will get passed to the "device driver" which would write them to the appropriate internal socket, TCP, UDP, or whatever. Like I said, it's a gross hack, but it works under all extant versions of MS-DOG.