newLISP Fan Club

Forum => newLISP in the real world => Topic started by: csfreebird on January 19, 2013, 03:03:59 AM

Title: Send byte array via TCP
Post by: csfreebird on January 19, 2013, 03:03:59 AM
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?
Title: Re: Send byte array via TCP
Post by: cormullion on January 19, 2013, 04:07:58 AM
Does pack help?
Title: Re: Send byte array via TCP
Post by: bairui on January 19, 2013, 04:10:15 AM
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. :)
Title: Re: Send byte array via TCP
Post by: cormullion on January 19, 2013, 04:16:38 AM
i know nothing about TCP :)
Title: Re: Send byte array via TCP
Post by: csfreebird on January 19, 2013, 04:42:49 AM
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)
"0005"


Which API could let me  to send my byte array?

I am new to newLISP.
Title: Re: Send byte array via TCP
Post by: bairui on January 19, 2013, 05:28:25 AM
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?
Title: Re: Send byte array via TCP
Post by: csfreebird on January 19, 2013, 05:37:04 AM
It works now.

> (set 'socket (net-connect "localhost" 8889))
16
> (set 'size (pack ">d" 19))
"0019"
> (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.
Title: Re: Send byte array via TCP
Post by: cormullion on January 19, 2013, 06:00:05 AM
Good work guys. If you could answer the question on Stack Overflow (//http), that would look good...!
Title: Re: Send byte array via TCP
Post by: csfreebird on January 19, 2013, 06:33:27 AM
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.