view_server.sh, which listens for (any number of) clients, direc

view.py only works on one client at a time (even more limited than that: only one slice at a time). This allows for scaling.
Depends on socat, which should be an easy depend; if that's a problem, the minimal work that socat does can be rewritten in python (it's more or less just import socket; import subprocess).

Making this work reliably meant hunting down a missing data bug,
which turned out to be a buffering issue. flush() solved it.