Simple TCP/IP Server using the UIPEthernet library for ENC28J60 Ethernet boards.

Dependencies:   UIPEthernet

Committer:
hudakz
Date:
Fri Aug 30 19:18:40 2019 +0000
Revision:
3:3a4fc577ecaa
Parent:
2:60ca1737aa47
Child:
4:f7aed299f625
Mbed OS 5 enabled.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:837203c8d865 1 /*
hudakz 0:837203c8d865 2 * Simple TcpServer using the UIPEthernet library for ENC28J60 Ethernet boards.
hudakz 0:837203c8d865 3 *
hudakz 0:837203c8d865 4 */
hudakz 3:3a4fc577ecaa 5 #include "mbed.h"
hudakz 3:3a4fc577ecaa 6 #include "UipEthernet.h"
hudakz 3:3a4fc577ecaa 7 #include "TcpServer.h"
hudakz 3:3a4fc577ecaa 8 #include "TcpClient.h"
hudakz 0:837203c8d865 9
hudakz 3:3a4fc577ecaa 10 #define IP "192.168.1.35"
hudakz 3:3a4fc577ecaa 11 #define GATEWAY "192.168.1.1"
hudakz 3:3a4fc577ecaa 12 #define NETMASK "255.255.255.0"
hudakz 3:3a4fc577ecaa 13 #define PORT 10001
hudakz 0:837203c8d865 14
hudakz 3:3a4fc577ecaa 15 const uint8_t MAC[6] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
hudakz 3:3a4fc577ecaa 16 UipEthernet net(MAC, D11, D12, D13, D10); // mac, mosi, miso, sck, cs
hudakz 3:3a4fc577ecaa 17 TcpServer server; // Ethernet server
hudakz 3:3a4fc577ecaa 18 TcpClient* client;
hudakz 3:3a4fc577ecaa 19 uint8_t recvData[1024];
hudakz 3:3a4fc577ecaa 20 const char sendData[] = "Data received OK";
hudakz 0:837203c8d865 21
hudakz 3:3a4fc577ecaa 22 /**
hudakz 3:3a4fc577ecaa 23 * @brief
hudakz 3:3a4fc577ecaa 24 * @note
hudakz 3:3a4fc577ecaa 25 * @param
hudakz 3:3a4fc577ecaa 26 * @retval
hudakz 3:3a4fc577ecaa 27 */
hudakz 0:837203c8d865 28 int main(void)
hudakz 0:837203c8d865 29 {
hudakz 3:3a4fc577ecaa 30 printf("Starting ...\r\n");
hudakz 3:3a4fc577ecaa 31
hudakz 3:3a4fc577ecaa 32 //net.set_network(IP, NETMASK, GATEWAY); // include this to use static IP address
hudakz 3:3a4fc577ecaa 33 net.connect();
hudakz 3:3a4fc577ecaa 34
hudakz 3:3a4fc577ecaa 35 // Show the network address
hudakz 3:3a4fc577ecaa 36 const char* ip = net.get_ip_address();
hudakz 3:3a4fc577ecaa 37 const char* netmask = net.get_netmask();
hudakz 3:3a4fc577ecaa 38 const char* gateway = net.get_gateway();
hudakz 3:3a4fc577ecaa 39
hudakz 3:3a4fc577ecaa 40 printf("IP address: %s\r\n", ip ? ip : "None");
hudakz 3:3a4fc577ecaa 41 printf("Netmask: %s\r\n", netmask ? netmask : "None");
hudakz 3:3a4fc577ecaa 42 printf("Gateway: %s\r\n\r\n", gateway ? gateway : "None");
hudakz 3:3a4fc577ecaa 43
hudakz 3:3a4fc577ecaa 44 /* Open the server on ethernet stack */
hudakz 3:3a4fc577ecaa 45 server.open(&net);
hudakz 3:3a4fc577ecaa 46
hudakz 3:3a4fc577ecaa 47 /* Bind the HTTP port (TCP 80) to the server */
hudakz 3:3a4fc577ecaa 48 server.bind(PORT);
hudakz 0:837203c8d865 49
hudakz 3:3a4fc577ecaa 50 /* Can handle 5 simultaneous connections */
hudakz 3:3a4fc577ecaa 51 server.listen(5);
hudakz 3:3a4fc577ecaa 52
hudakz 3:3a4fc577ecaa 53 while (true) {
hudakz 3:3a4fc577ecaa 54 client = server.accept();
hudakz 3:3a4fc577ecaa 55
hudakz 3:3a4fc577ecaa 56 if (client) {
hudakz 3:3a4fc577ecaa 57 size_t recvLen;
hudakz 0:837203c8d865 58
hudakz 3:3a4fc577ecaa 59 printf("\r\n----------------------------------\r\n");
hudakz 3:3a4fc577ecaa 60 printf("Client with IP address %s connected.\n\r", client->getpeername());
hudakz 3:3a4fc577ecaa 61 if ((recvLen = client->available()) > 0) {
hudakz 3:3a4fc577ecaa 62 printf("%d bytes received:\r\n", recvLen);
hudakz 3:3a4fc577ecaa 63 client->recv(recvData, recvLen);
hudakz 3:3a4fc577ecaa 64 for (int i = 0; i < recvLen; i++)
hudakz 3:3a4fc577ecaa 65 printf(" 0x%.2X", recvData[i]);
hudakz 3:3a4fc577ecaa 66 printf("\r\n");
hudakz 3:3a4fc577ecaa 67 client->send((uint8_t*)sendData, strlen(sendData));
hudakz 3:3a4fc577ecaa 68 printf("%s\r\n", sendData);
hudakz 0:837203c8d865 69 }
hudakz 3:3a4fc577ecaa 70
hudakz 3:3a4fc577ecaa 71 printf("Client with IP address %s disconnected.\r\n", client->getpeername());
hudakz 3:3a4fc577ecaa 72 client->close();
hudakz 0:837203c8d865 73 }
hudakz 0:837203c8d865 74 }
hudakz 3:3a4fc577ecaa 75 }