<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I feel your pain, Tim.  I’ve recently been dealing with the need to negotiate Telnet connection control characters.  Normally I’ve ignored them but I had a customer application where the device I was connecting to required an answer when it sent stuff like:  0xFF 0xFD 0x01.  If I don’t respond back properly then it would block the connection.  And since I don’t want my response or those characters in the output being shown to the user, I have had to basically come up with my own buffering and storing the buffer myself.  Seems like it works OK.  I’ve never moved to the Xojo.Net.TCPSocket since it doesn’t have a listen method and it’s a PITA to read stuff into a memory block.  Seems like Xojo just didn’t want to finish the development and give text or string out to the user.<div class=""><br class=""></div><div class="">And yeah, now what do you do since you’ve done all the work to migrate and now it’s abandoned for the most part.  Code gets messy.</div><div class=""><br class=""></div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 13, 2019, at 3:38 PM, Tim Streater <<a href="mailto:timstreater@greenbee.net" class="">timstreater@greenbee.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">On 13 Mar 2019, at 19:36, Jon Ogden via Nug <<a href="mailto:nug@xojousers.com" class="">nug@xojousers.com</a>> wrote:</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">> Most of the Xojo framework will be set aside AFAIK. Auto is deprecated and</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">> Variants are back. Like you said Text is deemphasized. Xojo.Net.HttpSocket has</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">> been replaced by URLConnection. Etc. </div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">What I've been doing the last two to three years is re-implementing, in Xojo, an app that I previously implemented as a mixture of JavaScript to present to the user (via a browser window), using AJAX to talk to backend PHP scripts on the user's machine, using an instance of apache talking to localhost to do so. The PHP scripts did all the database and socket stuff.</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">I found some aspects of Xojo irritating while doing this work:</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">1) Accumulating text as I read from a socket was slow. Concatenation of Text appears to be very slow.</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">2) Because of (1) I had to accumulate the text as a memoryblock, then convert to a Xojo.Core.memoryblock so I could apply a TextEncoding and convert to Text. This was also slow when you're reading 5Mbytes of text from a socket, line by line, necessary since the the end-of-data marker is a special line in the text stream.</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">3) Xojo sockets don't have a getline() method so I had to create my own using socket.readall and then return data line by line, doing timeout and error handling too. Fastest way (performance-wise) at the bottom was to keep this sort of intermediate data in byte arrays.</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">4) Everything was made worse by the fact that the different frameworks (new and old) didn't always implement the same set of methods.</div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""></div><div style="margin: 0px 0px 0px 5px; caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Now having all this working satisfactorily I'm not in much of a mood to change it.</div><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Cheers -- Tim--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Nug mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:Nug@xojousers.com" style="font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">Nug@xojousers.com</a><br style="caret-color: rgb(0, 0, 0); font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="http://mail.xojousers.com/mailman/listinfo/nug_xojousers.com" style="font-family: Monaco, "Courier New", monospace; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://mail.xojousers.com/mailman/listinfo/nug_xojousers.com</a></div></blockquote></div><br class=""></div></body></html>