Thanks for the reply Leslie.  I dug a little deeper into what's possible regarding exception handling, and it does seem likely that would allow us to work around / more gracefully handle this error case.

As for the second issue - I'm still relatively new to Lisp, but I'm always willing to learn.  Is there any particular resource you (or others reading) would suggest as a crash course on threading for scbl?


On Thursday, May 3, 2012 at 6:07 AM, Leslie P. Polzer wrote:

Brian Perry wrote:

I've been working on adapting existing Lisp code to communicate with a socket server
with the end goal of allowing a couple of different web based clients (one using Flash,
another in Processing) to communicate with the Lisp server. I've run into a couple of
specific roadblocks and was wondering if anyone could help.

The first issue is that the lisp server is crashing when a client disconnects. I'm
seeing an error similar to the following:

debugger invoked on a END-OF-FILE in thread #<THREAD RUNNING {1003707001}>:
end of file on #<SB-SYS:FD-STREAM for "a socket" {10037EFDE1}>

You want to catch that exception, or check for end of file before you read,
or disable the condition throw on EOF (if possible).

The second issue is that the Lisp server currently blocks when one connection is made,
preventing other clients from connecting simultaneously. I've assumed that sbcl's
threading might help here, but I didn't have any luck with it myself (most likely due to
lack of experience).

I haven't looked at your code, but I suppose some kind of non-blocking
or event-based I/O might be possible. On the other hand it might still
be easier to get used to threads since it's not that hard...


I based the server on the following example:

I'd be happy to provide more info if it helps.



Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
Sbcl-help mailing list