W7500P TCP UART 예제
Dependencies: mbed WIZnetInterface
W7500P 개발보드의 TCP 서버 예제 입니다.
텔넷포트(23)를 기본설정으로 사용중이며, DHCP를 통해 인터넷 연결설정이 됩니다.
main.cpp@2:97a6b36f2bc9, 2021-10-12 (annotated)
- 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?
User | Revision | Line number | New 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 |