2008/7/21 Chun Tian (binghe) binghe.lisp@gmail.com:
Hi, Chris & Erik
I researched networking API of CMUCL, SBCL, Clozure CL, LispWorks, Allegro
CL (I have only these 5 CLs installed), to bind local address/port:
- CMUCL, no such support (yet) but I can learn cmucl source code and make
it worked.
- SBCL, supported.
- Allegro CL, supported.
- LispWorks, supported.
- Clozure CL, supported.
Well, if you use the standard (public) functions in the sb-bsd-sockets package, your solution should work portably from SBCL on ECL, because that uses the same API. The ABCL solution I can do myself as I have it installed (and researched it a bit last weekend): the conclusion is that - at least - it's possible.
CLISP - from the review of the documentation - will not support this feature.
Which leaves LispWorks and Scieneer. Scieneer is very much like CMUCL, so if the latter needs adapting, so does the former (most likely). LispWorks supports :local-address and :local-port keys - at least as of 5.0 which I have installed here.
This means that we can have this feature everywhere but on CLISP... Which sounds enough to implement it [and contact the CLISP authors to implement it on CLISP too].
Above five CLs, I have working patches for "bind-local" support, as in attach.
For other CL platforms, I'll try to install them first. But since I never used them, maybe I cannot do any help...
That's fine. You already saved me many hours of research, meaning we now can make sure it gets in.
Thanks a lot for your efforts!
(By the way, I hope you don't mind if I take your patch as a guideline, not as the final one - especially the SBCL backend is changed more than I'd like: it could be a 4 line change.)
Once more: thanks a lot!
Bye,
Erik.