<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>Have you tried closing the ports? -- Matthias</div><div><br></div><div><br></div><br><div><div>On Sep 3, 2014, at 6:01 PM, Gilbert Martinez wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">I'm having issues reading the response from a TCP server.  Specifically, any attempt to read the input port does not terminate.  I've used <font face="courier new, monospace">port->bytes</font>, <font face="courier new, monospace">read-byte</font>, and <font face="courier new, monospace">read-line.</font> In all cases the effect is the same.<div>
<br></div><div>I thought that if there were no bytes available on an input port that the read attempt would just return <eof>.  Is this some kind of exclusivity issue?  Can I not read from the port until the connection with the server is closed or something?<br>
</div><div><br></div><div>My traffic monitor shows that the server is receiving the request and responding (here is the exchange):</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>
<table border="0" cellpadding="0" cellspacing="0" width="741" style="border-collapse:collapse;width:556pt">
 <colgroup><col width="63" style="width:47pt">
 <col width="128" style="width:96pt">
 <col width="67" style="width:50pt">
 <col width="97" style="width:73pt">
 <col width="386" style="width:290pt">
 </colgroup><tbody><tr height="20" style="height:15pt">
  <td height="20" width="63" style="height:15pt;width:47pt">Time</td>
  <td width="128" style="width:96pt">Src. & Dst.</td>
  <td width="67" style="width:50pt">Type</td>
  <td width="97" style="width:73pt">Function Code</td>
  <td width="386" style="width:290pt">Data</td>
 </tr>
 <tr height="20" style="height:15pt">
  <td height="20" style="text-align:left;height:15pt">908.875   </td>
  <td><a href="http://10.10.10.10:49967/">10.10.10.10:49967</a><-</td>
  <td>TCP Req.</td>
  <td>0x04</td>
  <td>[0x000 - 0x027]     00 01 00 00 00
  06 0B 04    00 3B 00 03</td>
 </tr>
 <tr height="20" style="height:15pt">
  <td height="20" align="right" style="text-align:left;height:15pt">908.905</td><td>10.10.10.10:49967-></td>
  <td>TCP Resp.</td>
  <td>0x04</td>
  <td>[0x000 - 0x027]     00 01 00 00 00
  09 0B 04    06 00 00 00 00 00 00</td>
 </tr></tbody></table></div></blockquote><br><div>Here is the code I am using to query:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="courier new, monospace">#lang racket</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">(define (hex-bytes->bytes hex-bytes-list)</font></div>
</div><div><div><font face="courier new, monospace">  (define (hex-byte->dec-byte hex-byte)</font></div></div><div><div><font face="courier new, monospace">    (string->number (string-append "#x" ((if (symbol? hex-byte)</font></div>
</div><div><div><font face="courier new, monospace">                                             symbol->string</font></div></div><div><div><font face="courier new, monospace">                                             number->string)</font></div>
</div><div><div><font face="courier new, monospace">                                         hex-byte))))</font></div></div><div><div><font face="courier new, monospace">  (apply bytes (for/list ((hex-byte (in-list hex-bytes-list)))</font></div>
</div><div><div><font face="courier new, monospace">                 (hex-byte->dec-byte hex-byte))))</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">(define-values (c-in c-out) (tcp-connect "10.10.10.11" 502))</font></div>
</div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">(write-bytes (hex-bytes->bytes '(00 01 00 00 00 06 0B 04 00 3B 00 03)) c-out)</font></div></div>
<div><div><font face="courier new, monospace">(flush-output c-out)</font></div></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"><br></font></div></blockquote><font face="arial, helvetica, sans-serif">I run the code above and execute the following in the interactions pane</font><font face="arial, helvetica, sans-serif">:</font><br>
<blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><font face="courier new, monospace"><div><br></div><div>Welcome to DrRacket, version 6.1.0.5--2014-08-25(32ae3f8/a) [3m].</div><div>Language: racket [custom].</div>
<div>12</div><div>>(for ((byte (in-bytes (port->bytes c-in))))</div></font><div><font face="courier new, monospace">  (printf "~x " byte))</font></div></div><div><font face="courier new, monospace"><br></font></div>
<div><font face="courier new, monospace"><br></font></div></blockquote><font face="arial, helvetica, sans-serif">The entry above above hangs on </font><font face="courier new, monospace">port->bytes.</font></div>
____________________<br>  Racket Users list:<br>  <a href="http://lists.racket-lang.org/users">http://lists.racket-lang.org/users</a><br></blockquote></div><br></body></html>