Linux esp8266 driver c source code - TCP Server
임베디드 리눅스 환경에서 user mode에서 동작하는 esp8266 드라이버를 만드는 중이다. 이전 포스트에서 smartconfig와 client 모드에서의 TCP, UDP 연결에 대해 알아보고 구현했다.
linux용 esp8266 드라이버 c source code - smartconfig
Linux esp8266 driver c source code - client TCP, UDP
이번 포스트에서는 TCP server 기능을 구현하고 예제를 통해 동작을 확인했다.
ESP8266 TCP 서버 모드
ESP8266에서는 간단하게 AT+CIPSERVER 커맨드를 사용해 TCP 서버를 만들 수 있다.
AT+CIPSERVER=<mode>[,<port>]
파라메터
- <mode> : 0 이면 서버 종료, 1 이면 서버 생성
- <port> : 포트 번호, 디폴트 값은 333이다.
원격 클라이언트에서 서버로 연결되면 ESP8266는 CONNECT 메세지를 보내온다.
서버를 반드시 multiple connection모드인 상태에서 사용해야 한다. multiple connection모드는 AT+CIPMUX=1 커맨드를 사용하여 설정할 수 있다.
클라이언트 연결 닫기
서버에 연결된 클라이언트는 아래 AT 커맨드를 사용해 연결을 끊을 수 있다.
AT+CIPCLOSE=<link ID>
데이터 읽고 쓰기
연결된 클라이언트와 데이터를 주고, 받는 방법은 Linux esp8266 driver c source code - client TCP, UDP 포스트의 데이터 전송과 데이터 읽기의 방식을 그대로 사용하면 된다.
ESP8266 Driver C Source
esp8266.tcpserver.h
esp8266.tcpserver.c
TCP 서버 예제
TCP 서버 예제 소스는 아래와 같다. 서버 테스트는 이전 포스트에서 python socket API 와 non-blocking socket server client example code의 ping/pong 서버/클라이언트의 모델을 사용하였다.
esp8266 드라이버를 초기화하고 WIFI AP에 연결되면 test_server를 호출한다.
TCP 서버를 실행하고, 'ping' 메세지가 전송되면, 연결된 클라이언트로 'pong'메시지를 전송한다.
이벤트 callback 함수를 두어 클라이언트와 연결되면 호출되도록 했다.
실행 결과
서버 실행 로그
클라이언트 실행 로그
관련 글
Linux esp8266 driver c source code - AP 모드로 softAP
댓글
댓글 쓰기