W7500P TCP UART 예제

Dependencies:   mbed WIZnetInterface

W7500P 개발보드의 TCP 서버 예제 입니다.

텔넷포트(23)를 기본설정으로 사용중이며, DHCP를 통해 인터넷 연결설정이 됩니다.

Committer:
daiyukim
Date:
Tue Oct 12 06:49:09 2021 +0000
Revision:
1:ea9223739b1b
Parent:
0:02f8a386a4ae
Child:
2:97a6b36f2bc9
TCP_ECHO_SERVER W7500P

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daiyukim 1:ea9223739b1b 1 #include "mbed.h"
daiyukim 1:ea9223739b1b 2 #include "EthernetInterface.h"
daiyukim 1:ea9223739b1b 3
daiyukim 1:ea9223739b1b 4 #define ECHO_SERVER_PORT 23
daiyukim 1:ea9223739b1b 5
daiyukim 1:ea9223739b1b 6 Serial pc(USBTX, USBRX);
daiyukim 1:ea9223739b1b 7
daiyukim 1:ea9223739b1b 8 int main (void)
daiyukim 1:ea9223739b1b 9 {
daiyukim 1:ea9223739b1b 10 pc.baud(115200);
daiyukim 1:ea9223739b1b 11
daiyukim 1:ea9223739b1b 12 pc.printf("Hello World\n");
daiyukim 1:ea9223739b1b 13 pc.printf("Wait a second...\r\n");
daiyukim 1:ea9223739b1b 14
daiyukim 1:ea9223739b1b 15 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
daiyukim 1:ea9223739b1b 16 EthernetInterface eth;
daiyukim 1:ea9223739b1b 17 eth.init(mac_addr); //Use DHCP
daiyukim 1:ea9223739b1b 18 eth.connect();
daiyukim 1:ea9223739b1b 19 pc.printf("Server IP Address is %s\r\n", eth.getIPAddress());
daiyukim 1:ea9223739b1b 20
daiyukim 1:ea9223739b1b 21 TCPSocketServer server;
daiyukim 1:ea9223739b1b 22 server.bind(ECHO_SERVER_PORT);
daiyukim 1:ea9223739b1b 23 server.listen();
daiyukim 1:ea9223739b1b 24
daiyukim 1:ea9223739b1b 25 while (true)
daiyukim 1:ea9223739b1b 26 {
daiyukim 1:ea9223739b1b 27 pc.printf("Wait for new connection...\r\n");
daiyukim 1:ea9223739b1b 28 TCPSocketConnection client;
daiyukim 1:ea9223739b1b 29 server.accept(client);
daiyukim 1:ea9223739b1b 30 client.set_blocking(false, 15000); // Timeout after (1.5)s
daiyukim 1:ea9223739b1b 31
daiyukim 1:ea9223739b1b 32 pc.printf("Connection from: %s\r\n", client.get_address());
daiyukim 1:ea9223739b1b 33 char buffer[256];
daiyukim 1:ea9223739b1b 34 while (true) {
daiyukim 1:ea9223739b1b 35 int n = client.receive(buffer, sizeof(buffer));
daiyukim 1:ea9223739b1b 36 if (n <= 0) break;
daiyukim 1:ea9223739b1b 37
daiyukim 1:ea9223739b1b 38 // print received message to terminal
daiyukim 1:ea9223739b1b 39 buffer[n] = '\0';
daiyukim 1:ea9223739b1b 40 pc.printf("Received message from Client :'%s'\r\n",buffer);
daiyukim 1:ea9223739b1b 41
daiyukim 1:ea9223739b1b 42 // reverse the message
daiyukim 1:ea9223739b1b 43 char temp;
daiyukim 1:ea9223739b1b 44 for(int f = 0, l = n-1; f<l; f++,l--){
daiyukim 1:ea9223739b1b 45 temp = buffer[f];
daiyukim 1:ea9223739b1b 46 buffer[f] = buffer[l];
daiyukim 1:ea9223739b1b 47 buffer[l] = temp;
daiyukim 1:ea9223739b1b 48 }
daiyukim 1:ea9223739b1b 49
daiyukim 1:ea9223739b1b 50 // print reversed message to terminal
daiyukim 1:ea9223739b1b 51 pc.printf("Sending message to Client: '%s'\r\n",buffer);
daiyukim 1:ea9223739b1b 52
daiyukim 1:ea9223739b1b 53 // Echo received message back to client
daiyukim 1:ea9223739b1b 54 client.send_all(buffer, n);
daiyukim 1:ea9223739b1b 55 if (n <= 0) break;
daiyukim 1:ea9223739b1b 56 }
daiyukim 1:ea9223739b1b 57 client.close();
daiyukim 1:ea9223739b1b 58 }
daiyukim 1:ea9223739b1b 59 }
daiyukim 1:ea9223739b1b 60