How to check if a port is open?

Discussion in 'Mac Programming' started by Xino, Oct 27, 2008.

  1. Xino macrumors member

    Sep 5, 2008
    How can I check if a port of a given host is open?

    I've searched the developer reference but couldn't find anything useful...
    Application is written in Objective-C / Cocoa.

    Thanks for your help
  2. yeroen macrumors 6502a


    Mar 8, 2007
    Cambridge, MA
    You will have to try connecting to the remote address and port (I'm assuming you want to connect to a remote TCP Server).

    At the lowest level BSD sockets C API, the connect() call returns a -1 on failure and sets the global errno variable to ECONNREFUSED when no one is listening on the remote address.

    NSStream and CFSocket will return an error code or error object, but although these may be enough to say that the connection failed, I'm not sure they'll tell you why it failed.

    The good news is you can assume that both Cocoa and Core Foundation use BSD sockets underneath the hood and so you can check the errno variable after a failed connection attempt as you would had you written this using the sockets API versus Cocoa/CoreFoundatation.

    (errno should be thread-safe on OS-X)

    or maybe NSError will translate errno for you:

    Handling Stream Errors

    try it and find out
  3. ChrisA macrumors G4

    Jan 5, 2006
    Redondo Beach, California

Share This Page