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