Changes to NIO for Release 1.06. NIO now known to work under SunOS 4.1.1. Better error reporting. NIOGetConnection() and NIOSetConnection() renamed to NIOGetConnID() and NIOSetConnID() to avoid the connotation that connections are actually established by these routines. The calls NIOSockListen(), NIOSockAccept() and NIOSockConvert() are new. They provide greater flexibility for applications wishing to obtain sockets by other means than NIOConnect() or NIOAccept(). Wrote a demo client and server to show how to use these new connection establishment calls. NIOSetLogLevel() and NIOGetLogLevel() are new. Argument structure of the write hook calls has changed. The caller is now responsible for supplying the buffer which the hook uses. Because NIO itself has no way of knowing what a reasonable maximum buffer size is, the burden is made to fall on the caller to know. The hooks are also now called with a NULL argument when an error occurs within NIORead() or NIOWrite(). This allows the application to install a single-point error detector, which can be easier than checking the return value of every single call. However, the hooks must now be prepared to handle a NULL argument, which wasn't true for releases prior to 1.06. Ability to specify timeouts was added. NIOSetTimeout()/NIOGetTimeout(). Reorganized distribution directory structure. The client convenience routines NIOReadServer() and NIOReadServerStatus(), as well as the global buffer nioBuf have been banished to convenience.c in the snippets directory. The reasons for this are: (i) they force dependence on the ETM and TS libraries for any NIO applications, whether the application uses those libraries or not. (ii) they assume a particular protocol extension (the "OK"/"FAIL"/"INFO" extension), which is not what NIO per se should do. If you want these routines in your application, make a copy of convenience.c (in snippets directory) and modify it appropriately.