W7500P TCP UART 예제

Dependencies:   mbed WIZnetInterface

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

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

Committer:
daiyukim
Date:
Tue Oct 12 13:35:30 2021 +0000
Revision:
3:4bfea09eabf8
Parent:
2:97a6b36f2bc9
Child:
4:35efc8506987
korean lang

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 2:97a6b36f2bc9 4 #define ECHO_SERVER_PORT 23
daiyukim 1:ea9223739b1b 5
daiyukim 1:ea9223739b1b 6 Serial pc(USBTX, USBRX);
daiyukim 1:ea9223739b1b 7
daiyukim 3:4bfea09eabf8 8 int main (void)
daiyukim 1:ea9223739b1b 9 {
daiyukim 1:ea9223739b1b 10 pc.baud(115200);
daiyukim 3:4bfea09eabf8 11
daiyukim 2:97a6b36f2bc9 12 pc.printf("안녕 세상!\n");
daiyukim 3:4bfea09eabf8 13 pc.printf("잠깐만...\r\n");
daiyukim 3:4bfea09eabf8 14
daiyukim 3:4bfea09eabf8 15 uint8_t mac_addr[6] = {0x00, 0x11, 0x22, 0x11, 0xAB, 0xAB};
daiyukim 3:4bfea09eabf8 16 //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
daiyukim 3:4bfea09eabf8 17
daiyukim 3:4bfea09eabf8 18 EthernetInterface eth;
daiyukim 3:4bfea09eabf8 19 eth.init(mac_addr); //Use DHCP
daiyukim 1:ea9223739b1b 20 eth.connect();
daiyukim 3:4bfea09eabf8 21
daiyukim 2:97a6b36f2bc9 22 pc.printf("서버주소: %s\r\n", eth.getIPAddress());
daiyukim 2:97a6b36f2bc9 23 pc.printf("서브넷 마스크: %s\r\n", eth.getNetworkMask());
daiyukim 2:97a6b36f2bc9 24 pc.printf("게이트웨이: %s\r\n", eth.getGateway());
daiyukim 2:97a6b36f2bc9 25 pc.printf("맥어드레스: %s\r\n", eth.getMACAddress());
daiyukim 3:4bfea09eabf8 26
daiyukim 1:ea9223739b1b 27 TCPSocketServer server;
daiyukim 1:ea9223739b1b 28 server.bind(ECHO_SERVER_PORT);
daiyukim 1:ea9223739b1b 29 server.listen();
daiyukim 3:4bfea09eabf8 30
daiyukim 3:4bfea09eabf8 31 while (true) {
daiyukim 2:97a6b36f2bc9 32 pc.printf("새로운 연결 대기중...\r\n");
daiyukim 1:ea9223739b1b 33 TCPSocketConnection client;
daiyukim 1:ea9223739b1b 34 server.accept(client);
daiyukim 1:ea9223739b1b 35 client.set_blocking(false, 15000); // Timeout after (1.5)s
daiyukim 3:4bfea09eabf8 36
daiyukim 2:97a6b36f2bc9 37 pc.printf("클라이언트 연결됨: %s\r\n", client.get_address());
daiyukim 1:ea9223739b1b 38 char buffer[256];
daiyukim 1:ea9223739b1b 39 while (true) {
daiyukim 1:ea9223739b1b 40 int n = client.receive(buffer, sizeof(buffer));
daiyukim 1:ea9223739b1b 41 if (n <= 0) break;
daiyukim 3:4bfea09eabf8 42
daiyukim 1:ea9223739b1b 43 // print received message to terminal
daiyukim 1:ea9223739b1b 44 buffer[n] = '\0';
daiyukim 2:97a6b36f2bc9 45 pc.printf("클라이언트로 부터 받은 메시지:'%s'\r\n",buffer);
daiyukim 3:4bfea09eabf8 46
daiyukim 1:ea9223739b1b 47 // reverse the message
daiyukim 1:ea9223739b1b 48 char temp;
daiyukim 3:4bfea09eabf8 49 for(int f = 0, l = n-1; f<l; f++,l--) {
daiyukim 1:ea9223739b1b 50 temp = buffer[f];
daiyukim 1:ea9223739b1b 51 buffer[f] = buffer[l];
daiyukim 1:ea9223739b1b 52 buffer[l] = temp;
daiyukim 3:4bfea09eabf8 53 }
daiyukim 3:4bfea09eabf8 54
daiyukim 1:ea9223739b1b 55 // print reversed message to terminal
daiyukim 2:97a6b36f2bc9 56 pc.printf("클라이언트로 메시지 보냄: '%s'\r\n",buffer);
daiyukim 3:4bfea09eabf8 57
daiyukim 1:ea9223739b1b 58 // Echo received message back to client
daiyukim 1:ea9223739b1b 59 client.send_all(buffer, n);
daiyukim 1:ea9223739b1b 60 if (n <= 0) break;
daiyukim 3:4bfea09eabf8 61 }
daiyukim 1:ea9223739b1b 62 client.close();
daiyukim 1:ea9223739b1b 63 }
daiyukim 3:4bfea09eabf8 64
daiyukim 2:97a6b36f2bc9 65 pc.printf("Bye Bye.\r\n");
daiyukim 1:ea9223739b1b 66 }
daiyukim 1:ea9223739b1b 67