HawkNL Frequently Asked Questions (FAQ) Copyright 2001-2002 Phil Frisbie Updated 24 July 2002 1. Why should I use HawkNL (NL low level) instead of Berkeley Sockets or Winsock? HawkNL provides a compatibility layer between your app and sockets. You don't need to worry about the differences between them, so your network code will be cleaner. Also, as HawkNL is ported to other platforms, your network code will already work on those additional platforms. 2. Can I use NL_RELIABLE and NL_UNRELIABLE sockets fully interchangeably? No, but version 1.2 and higher support NL_RELIABLE_PACKETS which are like UDP packets over a TCP stream. NL will take care of sending and receiving complete packets so you don't need to change your code at all to switch over to reliable TCP connections. Note that the packet size has been limited to 16384 bytes to conserve memory. 3. When will NLU (or HawkVoice) be ready for my game? NLU is a very ambitious project for one person, so it will take some time. Also, the API is being 'engineered' as it takes shape, and that takes extra time too. And, of course, it be MUCH faster if I had help . 4. The name OpenNL was much cooler, why did you change the name to HawkNL? OK, the brief details: Loki Games choose the name OpenNL for a DirectPlay clone. They had already purchased all the OpenNL domains (.com, .net, and .org) before I made my announcement here on hawksoft.com. Scott Dreaker of Loki pushed his weight around and promised me some inside work with OpenNL, but it turned out to be just a ploy to get me to give up the OpenNL name. Maybe more details later... 5. Why don't you support (name your OS)? I run Windows for my main development (Windows NT 4.0 and Win9x), and Unix/Linux was very easy to add, but I need volunteers to port to other OSs and platforms. The good news is that HawkVoice and NLU are written in 100% ANSI C. So HawkNL is the only part that will take much work. 6. Where is the 'select' function. I don't want to use threads or a polling loop? Version 1.3 adds nlPollGroup, which internally uses select() to check the read or write status of all sockets in the group. It returns an array of sockets that are ready to read or write. Last, but not least... How can I help? You can try out the sample apps, and report any problems. You can look at the source code and provide 'constructive' criticism , suggestions, or better yet, code showing your ideas. You can use the code, and let me know so I can link to your site, and of course, you should link to mine ;)