Colin Hogben
/
socket-test
Socket server test
main.cpp
- Committer:
- infinnovation
- Date:
- 2016-08-23
- Revision:
- 0:d2e0685698cc
- Child:
- 4:19dd8a25cc8a
File content as of revision 0:d2e0685698cc:
#include "mbed.h" #include "EthernetInterface.h" #ifndef SRV_PORT #define SRV_PORT 8084 #endif EthernetInterface eth; void tcp_echo_conn(TCPSocket *sock) { char buf[200]; int ret; while (true) { ret = sock->recv(buf, sizeof(buf)); if (ret < 0) { error("recv: %d", ret); } else if (ret == 0) { printf("recv: EOF\r\n"); delete sock; break; } else { ret = sock->send(buf, ret); if (ret < 0) { error("send: %d", ret); } } } } void tcp_echo(TCPServer *srv) { int err; while (true) { TCPSocket *sock = new TCPSocket; err = srv->accept(sock); if (err) error("accept: %d\r\n", err); printf("accepted connection\r\n"); Thread *conn_thread = new Thread; conn_thread->start(Callback<void()>(sock, tcp_echo_conn)); } } int main(void) { int err; printf("\r\n== socket-test %s ==\r\n", __DATE__); err = eth.connect(); if (err) error("connect: %d\n", err); printf("ip %s\r\n", eth.get_ip_address()); TCPServer srv; err = srv.open(ð); if (err) error("open: %d\r\n", err); err = srv.bind(SRV_PORT); if (err) error("bind: %d\r\n", err); err = srv.listen(1); if (err) error("listen: %d\r\n", err); Thread srv_thread; srv_thread.start(Callback<void()>(&srv, tcp_echo)); while (true) { wait(1.0); } }