Colin Hogben
/
sendrecv
Demonstrate unexpected interaction between send() and recv()
main.cpp
- Committer:
- infinnovation
- Date:
- 2016-08-18
- Revision:
- 0:b380efeccf3a
File content as of revision 0:b380efeccf3a:
#include "mbed.h" #include "EthernetInterface.h" Serial pc(USBTX, USBRX); EthernetInterface eth; void s2c_run(TCPSocket *sock) { int ret; char c; while (true) { ret = sock->recv(&c, 1); if (ret == 1) { printf("recv %02x=%c\r\n", c, (0x20 <= c && c < 0x7f) ? c : '?'); } else if (ret == 0) { printf("EOS\r\n"); } else { error("recv: %d\r\n", ret); } } } int main(void) { Thread s2c; int err; printf("\r\n== sendrecv ==\r\n"); 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(8084); if (err) error("bind: %d\r\n", err); err = srv.listen(1); if (err) error("listen: %d\r\n", err); TCPSocket sock; err = srv.accept(&sock); if (err) error("accept: %d\r\n", err); printf("accepted connection\r\n"); s2c.start(Callback<void()>(&sock, s2c_run)); while (true) { printf("tick...\r\n"); err = sock.send("tick\n", 5); if (err <= 0) error("send: %d\r\n", err); printf("...sent\r\n"); wait(1.0); } }