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