56

Is anybody else not able to get nc -lp 8888 working on Mac OS X? Is there another way to get this to work?

Hennes
  • 65,804
  • 7
  • 115
  • 169
kzh
  • 4,473

5 Answers5

66

It looks to me as if the -p option does nothing on the OS X version of netcat. To get it to work, I must do nc -l localhost 8888.

kzh
  • 4,473
28

Here's how this is working for me on OS X 10.10, with either the installed BSD version, or the one from Homebrew:

BSD Version

When using the BSD version that ships with OS X, a server can be started like this

/usr/bin/nc -l 9999

Homebrew

  • Install using Homebrew: brew install netcat
  • This will install v0.7.1 of http://netcat.sourceforge.net/
  • One can use either the nc or netcat command. nc is an alias for netcat.

To start a server:

nc -l -p 9999

To start a client:

nc targethost 9999

To get the manpage of this version, one needs to use man netcat, as man nc will open the manpage of the BSD version.

nwinkler
  • 385
12

I needed to test a web service over SSL, which ncat (made by the nmap team) supports.

brew install nmap
ncat -C --ssl api.somecompany.com 443

https://nmap.org/ncat/

Colin
  • 466
10

nc on MacOS has too many bugs, and Apple did none patch for years. the netcat from homebrew is a very low version. use ncat from nmap instead

J.Z
  • 211
1

Based on the nc manual from Mac:

NC(1) General Commands Manual NAME nc – arbitrary TCP and UDP connections and listens

-l      Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote
             host. 

It is an error to use this option in conjunction with the -p, -s, or -z options. Additionally, any timeouts specified with the -w option are ignored.

Working example:

nc -lv 9001