W7500P TCP UART 예제

Dependencies:   mbed WIZnetInterface

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

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

Committer:
daiyukim
Date:
Tue Oct 12 07:20:31 2021 +0000
Revision:
2:97a6b36f2bc9
Parent:
1:ea9223739b1b
Child:
3:4bfea09eabf8
TCP ECHO REPLY

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