HTTP client with RTEMS

Christian Mauderer christian.mauderer at embedded-brains.de
Fri Oct 6 06:52:28 UTC 2017


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.



More information about the users mailing list