4 ms·
It wasn't many hours and I know nc and have used it this exactly way. However, nc requires you know the hostname, an assumption I didn't want to make. I apprec
by diginux 14y ago
It wasn't many hours and I know nc and have used it this exactly way. However, nc requires you know the hostname, an assumption I didn't want to make.
I appreciate the criticism though, it is always good to question the investment of time. In this case, I feel comfortable with it. Can't discount the joy of programming little things either.
- niggler 14y agoIf you read the `nc` manpage, you'd notice that the -n option on osx and debian disables host lookup and that hostname is defined as hostname can be a numerical IP address or a symbolic hostname (unless the -n option is given). In general, a hostname must be specified, unless the -l option is given (in which case the local host is used).
- entropy_ 14y agoYou still need to know the IP. I use nc this exact same way, and it's definitely a hassle -- not a big one, but still -- to have to check ifconfig on one of the machines and then re-input the IP on the other. On internal networks where IPs are assigned by DHCP on connection and can and do change frequently this essentially needs to be done every time you send a file. I'm not saying that it's such a big hassle that we need complicated ways of avoiding it, but this is definitely a cool project that does a away with a (minor) pain point and I for one applaud the author for scratching his itches and sharing with the world, even if his hack isn't perfect.
- niggler 14y agonc does this with the broadcast addresses (read https://en.wikipedia.org/wiki/Broadcast_address https://en.wikipedia.org/wiki/Broadcast_address for more info): Recipient listens on 0.0.0.0: recipient$ nc -l 0.0.0.0 6969 > file Sender broadcasts to broadcast address: sender$ <file | nc 192.168.0.255 6969 or sender$ <file | nc 255.255.255.255 6969
- diginux 14y ago1. In general, I am on the computer I want to send from, then I go to the computer I want to receive on. This script seems to require I be at the receiving computer first. Is there a trick to do it my way? 2. A very minor point, but you are still required to know (or at least specify) a the filename on the receiving end. My solution does not.
- niggler 14y agoTo solve both complaints, just tar -c on the ingress and tar -x on the egress: sender$ tar -c file | nc -l 12345 recipient$ nc addr 12345 | tar -x This will create a file on the recipient side with the specified name and properties (and you run the sender command first)
- diginux 14y agoDoesn't seem to work for me sender$ tar -c awesome.jpg | nc -l 0.0.0.0 12345 (waiting forever) recipient$ nc 255.255.255.255 12345 | tar -x tar: This does not look like a tar archive tar: Exiting with failure status due to previous errors
- bluehex 14y agoI'm not at a terminal now so can't verify this but it looks like you swapped the send and receive addresses from what was suggested. Try send on broadcast and receive on 0.0.0.0.