ref: a351bcdccdf5a4273bc8dc3360a48fbb8b8aa9ea
dir: /src/netecho.c/
#include <u.h> #include <libc.h> void main(int argc, char* argv[]) { int cfd, lfd, dfd; long nr; char adir[40]; char ldir[40]; char buf[1024]; cfd = announce("tcp!*!9988", adir); if (cfd < 0) sysfatal("announce: %r"); print("announced tcp!*!9988 in %s\n", adir); for(;;){ lfd = listen(adir, ldir); if (lfd < 0) sysfatal("listen: %r"); dfd = accept(lfd, ldir); if (dfd < 0) sysfatal("can't accept: %r"); close(lfd); print("accepted call at %s\n", ldir); for(;;){ nr = read(dfd, buf, sizeof buf); if (nr <= 0) break; write(dfd, buf, nr); } print("terminated call at %s\n", ldir); close(dfd); } }