Page 1 of 1
Send byte array via TCP
Posted: Sat Jan 19, 2013 11:03 am
by csfreebird
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?
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 12:07 pm
by cormullion
Does pack help?
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 12:10 pm
by bairui
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:
For a signed big-endian short.
Heh... and on clicking Submit, it seems that Cormullion agrees. :)
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 12:16 pm
by cormullion
i know nothing about TCP :)
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 12:42 pm
by csfreebird
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.
Which API could let me to send my byte array?
I am new to newLISP.
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 1:28 pm
by bairui
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?
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 1:37 pm
by csfreebird
It works now.
Code: Select all
> (set 'socket (net-connect "localhost" 8889))
16
> (set 'size (pack ">d" 19))
"\000\019"
> (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.
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 2:00 pm
by cormullion
Good work guys. If you could answer the question on
Stack Overflow, that would look good...!
Re: Send byte array via TCP
Posted: Sat Jan 19, 2013 2:33 pm
by csfreebird
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.