HTTP client with RTEMS

Hui Yie Teh hteh703 at aucklanduni.ac.nz
Fri Oct 6 12:33:26 UTC 2017


Hi Christian,

No, it's not an RTEMS based server. I have a simple server running on
python.

I am emulating the LM3S6965 ARM board on Qemu, and I think it has 64kB of
RAM?

On 6 October 2017 at 19:52, Christian Mauderer <
christian.mauderer at embedded-brains.de> wrote:

>
> Am 05.10.2017 um 22:44 schrieb Hui Yie Teh:
> > I'm trying to initialize bsdnetwork using
> > 'rtems_bsdnet_initialize_network()' as in the mghttpd example but it
> > doesn't work.
> >
> > It is giving me an error "Can't get network cluster memory".
> >
> > Any help would be much appreciated.
> >
> > Thanks.
> >
> > On 6 October 2017 at 08:46, Hui Yie Teh <hteh703 at aucklanduni.ac.nz
> > <mailto:hteh703 at aucklanduni.ac.nz>> wrote:
> >
> >     Hi Christian,
> >
> >     Thank you for the reply!
> >
> >     My app will be doing some simple HTTP, with GET and POST requests
> >     that has a text response body, e.g. "Received". I think following
> >     the mghttpd test will suffice.
> >
> >     However, I'm currently looking at the code for the mghttpd test and
> >     I was wondering if there is a way I can run it or get a non-test
> >     version of it? I can't really tell what I need or what the code does
> >     without running it.
> >
> >     Cheers.
> >
> >     On 6 October 2017 at 07:47, Christian Mauderer <list at c-mauderer.de
> >     <mailto:list at c-mauderer.de>> wrote:
> >
> >         Am 05.10.2017 um 17:52 schrieb Hui Yie Teh:
> >         > Hi,
> >         >
> >         > I am trying to build a HTTP client using RTEMS. Is there any
> >         tutorials
> >         > that I can follow? I already have a server running, and I just
> >         need to
> >         > send some GET and POST requests.
> >         >
> >         > I am new to RTEMS and embedded programming in general. Any
> >         help is much
> >         > appreciated.
> >         >
> >         > Cheers,
> >         > Yie
> >         >
> >
> >         Hello Yie,
> >
> >         it depends a little on your application.
> >
> >         If you just want to learn a little about the HTTP protocol and
> >         only want
> >         to try some requests, you can just use a raw socket. The HTTP
> >         basics are
> >         really quite simple if you don't want to use things like
> >         compression or
> >         different MIME types. Writing a simple request for some simple
> html
> >         document is quite easy. Something like that is done in the test
> >         for the
> >         mghttpd in RTEMS:
> >
> >
> >         https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01
> >         <https://git.rtems.org/rtems/tree/testsuites/libtests/mghttpd01>
> >
> >         Note that there are most likely a lot of error cases that are
> >         not caught
> >         in that test (like unexpected HTTP responses).
> >
> >         If you need your client for some more professional application or
> >         something that should be more robust, I would suggest to use some
> >         library that does most of the low level handling. I'm not aware
> >         of one
> >         integrated into RTEMS but it shouldn't be hard to find one that
> >         works.
> >
> >         I think that I have seen some client functions in civetweb (still
> >         MIT-licensed fork of mongoose httpd which has been forked off
> >         before the
> >         license change in mongoose). From my experience, civetweb needs
> only
> >         very few modifications to work with RTEMS.
> >
> >         Most likely you can also (with some more effort) compile some
> >         bigger C
> >         or C++ libraries like libcurl. But I haven't tried that yet. By
> >         the way:
> >         there is also a large list of http client libraries on the
> libcurl
> >         Homepage: https://curl.haxx.se/libcurl/competitors.html
> >         <https://curl.haxx.se/libcurl/competitors.html>
> >
> >         Regards
> >
> >         Christian
> >
>
> Hello Yie,
>
> you said in your initial mail that you already have a server running. Is
> that an RTEMS based server? In that case I would suggest to just use the
> initialization from that one.
>
> The "Can't get network cluster memory" is printed if a malloc for a
> cluster of mbufs fails in the initialization. A possible reason for that
> is that there isn't enough memory. On what platform are you working? How
> many RAM do you have?
>
> Regards
>
> Christian
>
> --
> --------------------------------------------
> embedded brains GmbH
> Christian Mauderer
> Dornierstr. 4
> D-82178 Puchheim
> Germany
> email: christian.mauderer at embedded-brains.de
> Phone: +49-89-18 94 741 - 18
> Fax:   +49-89-18 94 741 - 08
> PGP: Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20171007/c2aedb31/attachment-0002.html>


More information about the users mailing list