Add pv (available in many standard repos these days, from http://www.ivarch.com/programs/pv.shtml if not) into the mix and you get a handy progress bar too.
and so forth will result in a throbber as it can't query the pipe for a length.
If you demoggify the first example to:
pv file | nc ...
you get a progress bar on the sending end without manually specifying a size.
Even without a proper % progress bar, the display can be useful as you can at least see the total sent so far (so if you know the approximate final size you can judge completeness in your head) and the current rate (so you can see it is progressing as expected (so you get some indication of a problem such as an unexpectedly slow network connection, other than it taking too long)).
On the receiving machine, in its destination directory:
And on the sending machine, from its source directory: netcat varies a bit from distro to distro, so you may need to adjust these command lines a bit to get it to work.