Hello
I want to send two bytes which represent an unsigned short in big-endian to server via TCP. But net-send only supports string parameter.
Could anyone tell me how to do this?
Does pack help?
I'm going to guess here, csfreebird, that you can use the (pack ...) and (unpack ...) functions for this. See the newLISP User Manual for these functions. From a quick look, it would seem you'd use:
(pack ">d" your_short)
For a signed big-endian short.
Heh... and on clicking Submit, it seems that Cormullion agrees. :)
i know nothing about TCP :)
Thanks for so quick reply.
But after packaging my short integer, I need a way to send the bytes to server via TCP.
net-send always needs a string.
And the pack returns a string too.
>(pack ">d" 5)
" 00 05"
Which API could let me to send my byte array?
I am new to newLISP.
I have never done net coding, but I thought that was exactly what the (pack ...), (unpack ...) pair were for - to be able to send binary values encoded as strings to be decoded back into their proper forms at the other end. No?
It works now.
> (set 'socket (net-connect "localhost" 8889))
16
> (set 'size (pack ">d" 19))
" 00 19"
> (net-send socket size)
2
pack returns a string buffer that contains my two bytes, net-send sends the string to server.
My C++ server got two bytes, 0 and 19.
Thanks.
Good work guys. If you could answer the question on Stack Overflow (//http), that would look good...!
It's done.
Will go ahead with this.
I am about to simulate over 20,000 devices using newLISP, they will be used to test against my TCP server.