<div dir="ltr"><div><div>Samuel,<br><br></div> (forwarded to the mailing list also)<br><br> Basically, as I understand the problem, is that lisp LISTEN does not notify end of file/connection and characters avaiable in the same manner READ-CHAR-NO-HANG (and the character stream system) does. LISTEN returns false on char not available and end-of-file. READ-CHAR-NO-HANG (as well as READLINE) uses conditions.<br>

<br></div><div> So, my question is, is there any different way (using usockets) of identifying when a non-char connection is closed?<br><br></div><div> Thanks!<br></div><div><br></div><div><br><br><div><div><div><br><div class="gmail_quote">

---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Roger Sen Montero</b> <span dir="ltr"><<a href="mailto:roger.sen@gmail.com">roger.sen@gmail.com</a>></span><br>Date: Thu, Mar 21, 2013 at 8:07 PM<br>

Subject: Re: Detecting whether the other end has closed my socket stream<br>To: Samuel Edwin Ward <<a href="mailto:seward@cytochro.me">seward@cytochro.me</a>><br><br><br><div dir="ltr"><div><div><div>Samuel,<br><br>

</div> I have identified the issue to a call to a listen when waiting to read the socket so I can multiplex multiple socket reading.<br><br><a href="http://paste.lisp.org/display/136157" target="_blank">http://paste.lisp.org/display/136157</a><br>


<br></div>With the current code COLLECT-INPUT (listen stream) is not raising the end of file condition. <br><br>(defun collect-input (socket buffer &optional (end-char 13))<br>  (loop :with stream = (usocket:socket-stream socket)<br>


     :with byte<br>     :while (listen stream)<br>     :doing<br>     (setf byte (read-byte stream))<br>     (when (= byte end-char)<br>       (return t))<br>     (vector-push-extend byte buffer)))<br><br><br>Taking out the listen and changing it to <br>


<br>:while t<br><br></div> raises the condition correctly when the connection is closed from client side, but then I'm unable to multiplex.<br><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra">

<br><br><div class="gmail_quote">
On Thu, Mar 21, 2013 at 1:00 AM, Roger Sen Montero <span dir="ltr"><<a href="mailto:roger.sen@gmail.com" target="_blank">roger.sen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


Samuel,<div><br><div> Let me create a simple test case from the current code and I'll post it here.</div><div><span></span><br><br>El miércoles, 13 de marzo de 2013, Samuel Edwin Ward  escribió:<div><div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="auto"><div>Hi Roger/all,</div><div><br></div><div>I wasn't able to reproduce this with my setup; I seem to get the end of file condition either way.</div><div><br></div><div>I'm using usocket 0.6.0.1 on sbcl 1.0.54.0-185b926 on Mac OS 10.7.5.</div>



<div><br></div><div>Can you provide your versions and/or a runnable test case?</div><div><br>On Mar 13, 2013, at 12:24, Roger Sen Montero <<a>roger.sen@gmail.com</a>> wrote:<br>
<br></div><blockquote type="cite"><div><div dir="ltr"><div><div><div><div><div><div>Hi all!!<br><br></div> The FAQ states:<br><br> Reading from a stream which has been closed at the remote end
        signals an END-OF-FILE condition, meaning that reading from the
        stream
        and detecting that condition is the way to do it.<br><br></div> But when a create a server with:<br><br> :element-type 'character<br><br></div> I'm able to get an "Unexpected end of file" condition on the server side when the client disconnect.<br>





 <br></div> Unfortunately, when I create the server with:<br><br> :element-type 'unsigned-byte<br><br></div> I do not get the condition, so I'm unable to detect when a client has disconnected.<br><br></div> Also, is there any plan to support utf8 streams directly without creating unsigned-byte sockets and converting from/to string to string-utf-8-bytes?<br>





<br><br> thanks!  <br><div><div><div><div><div><div><div>-- <br>Roger Sen Montero<br><a>roger.sen@gmail.com</a>
</div></div></div></div></div></div></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>usocket-devel mailing list</span><br><span><a>usocket-devel@common-lisp.net</a></span><br>
<span><a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/usocket-devel" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/usocket-devel</a></span><br></div></blockquote></div></blockquote>


</div></div></div>
</div><div><div><br><br>-- <br>Roger Sen Montero<br><a href="mailto:roger.sen@gmail.com" target="_blank">roger.sen@gmail.com</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Roger Sen Montero<br><a href="mailto:roger.sen@gmail.com" target="_blank">roger.sen@gmail.com</a>
</div>
</div></div></div><br><br clear="all"><br>-- <br>Roger Sen Montero<br><a href="mailto:roger.sen@gmail.com">roger.sen@gmail.com</a>
</div></div></div></div></div>