A simple HTTP server echoing received requests. Ethernet connection is over an ENC28J60 board. Usage: Type the server's IP address into you web browser and hit <ENTER>.

Dependencies:   UIPEthernet

Files at this revision

API Documentation at this revision

Comitter:
hudakz
Date:
Wed Sep 17 08:51:50 2014 +0000
Child:
1:9c602cc98b9f
Commit message:
rev. 00

Changed in this revision

UIPEthernet.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UIPEthernet.lib	Wed Sep 17 08:51:50 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/hudakz/code/UIPEthernet/#5350a66d5279
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Sep 17 08:51:50 2014 +0000
@@ -0,0 +1,56 @@
+/* 
+ * In this example the HTTP request (text) received from a browser is echoed (sent back) to the browser.
+ * Ethernet connection is via an ENC28J60 board driven by UIPEthernet
+ */
+
+#include "mbed.h"
+#include <UIPEthernet.h>
+#include <UIPServer.h>
+#include <UIPClient.h>
+
+// UIPEthernet is the name of a global instance of UIPEthernetClass.
+// Do not change the name! It is used within the UIPEthernet library.
+// Adapt the SPI pin names to your mbed platform/board if not present yet.
+#if defined(TARGET_LPC1768)
+UIPEthernetClass UIPEthernet(p11, p12, p13, p8);        // mosi, miso, sck, cs
+#elif defined(TARGET_LPC1114)
+UIPEthernetClass UIPEthernet(dp2, dp1, dp6, dp25);      // mosi, miso, sck, cs
+#elif defined(TARGET_LPC11U68)
+UIPEthernetClass UIPEthernet(P0_9, P0_8, P1_29, P0_2);  // mosi, miso, sck, cs
+#elif defined (TARGET_NUCLEO_F103RB)
+UIPEthernetClass UIPEthernet(PB_5, PB_4, PB_3, PB_6);   // mosi, miso, sck, cs
+#endif
+
+// MAC number must be unique within the connected network. Modify as appropriate.
+const uint8_t    MY_MAC[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
+// IP address must be unique and compatible with your network. Change as appropriate.
+const IPAddress  MY_IP(192,168,1,181);
+const uint16_t   MY_PORT = 80;      // for HTTP connection
+EthernetServer   myServer = EthernetServer(MY_PORT);
+Serial           serial(USBTX, USBRX);
+
+int main()
+{
+    Ethernet.begin(MY_MAC,MY_IP);
+    myServer.begin();
+    while(1) {
+        EthernetClient client = myServer.available();
+        if (client) {
+            size_t size = client.available();
+            if(size > 0) {
+                char* buf = (char*)malloc(size);
+                size = client.read((uint8_t*)buf, size);
+                if(buf[0] == 'G' && buf[1] == 'E' && buf[2] == 'T') {
+                    serial.printf("GET request received:\n\r");
+                    serial.printf(buf);
+                    char echoHeader[256] = {};
+                    sprintf(echoHeader,"HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: text\r\nConnection: About to close\r\n\r\n", size);
+                    client.write((uint8_t*)echoHeader,strlen(echoHeader));
+                    client.write((uint8_t*)buf, size);
+                    serial.printf("Echo done.\r\n");
+                }
+                free(buf);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Sep 17 08:51:50 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/9327015d4013
\ No newline at end of file