Sockets (again)
Phil Davis
phil at pdslabs.net
Tue Apr 4 23:06:19 EDT 2023
Bob -
Don't use EOF. It's broken since forever ago.
I've done both of the following methods with success:
-- either --
End your data stream with a CR, and then on the receiving end "read from
socket XYZ for 1 line". This assumes that the data stream itself doesn't
contain any CRs. I normally base64-encode the data stream, then replace
CR with empty in the encoded string. This doesn't interfere with
base64Decoding on the receiving end - it'll still work fine.
-- or --
Make line 1 of your data stream an integer that is the number of bytes
in line 2 of your data stream
Make line 2 of your data stream the data you want to send
Then on the receiving end, do a two-step:
- read from socket XYZ for 1 line
- put it into tDataLength
- read from socket XYZ for tDataLength bytes
That's all I got :-)
Phil Davis
On 4/4/23 1:47 PM, Bob Sneidar via use-livecode wrote:
> I have sockets working in my File Server Agent, but only using non-blocking calls, that is using "with message". Removing the "with message" bit does not return any response from the server agent.
>
> For instance I send a payload using
> write payload to socket tSocket with message "messageReceived"
> The messageReceived handler gets triggered, and I can then
> read from socket tSocket until EOF -- or other delimiter
> it will then contain the response from the File Server Agent.
>
> If however I use
> write payload to socket tSocket -- blocking
> read from socket tSocket until EOF -- or some other delimiter doesn't matter
>
> the call times out and nothing ends up in the it or result variables.
>
> I can (and have) made the non-blocking method work, but that means I have to send all the files I want to transfer all at once, because if I send them one at a time, I need to know if the last transfer succeeded before continuing.
>
> Does anyone have an example of a blocking socket server? The example in Livecode Lessons really only focuses on non-blocking calls.
>
> Bob S
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
--
Phil Davis
(503) 307-4363
More information about the use-livecode
mailing list