Register FAQ / Rules Forum Spy Search Today's Posts Mark Forums Read
Go Back   MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Reply
 
Thread Tools Search this Thread Display Modes
Old Oct 27, 2008, 01:10 PM   #1
Xino
macrumors member
 
Join Date: Sep 2008
How to check if a port is open?

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
Xino is offline   0 Reply With Quote
Old Oct 27, 2008, 01:45 PM   #2
yeroen
macrumors 6502a
 
yeroen's Avatar
 
Join Date: Mar 2007
Location: 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
__________________
all Jarvis, all the time

Last edited by SilentPanda; Jul 27, 2009 at 06:39 AM. Reason: post merge
yeroen is offline   0 Reply With Quote
Old Oct 27, 2008, 07:21 PM   #3
ChrisA
macrumors G4
 
Join Date: Jan 2006
Location: Redondo Beach, California
[QUOTE=Xino;6508541]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[/QUOTE

From the terminal the "telnet" works well. For example I know port 80 is open on my computer. I can test this

telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.

but I know port 81 is not
telnet localhost 81
Trying ::1...
telnet: connect to address ::1: Connection refused


From C. Simply try to connect() and see what you get. read the "connect"
man page. The man page tells you about the return codes returned by
connect(). if you get ECONNREFUSED then the port is not open.
ChrisA is offline   0 Reply With Quote

Reply
MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
thread Thread Starter Forum Replies Last Post
How to check if a port is open and how to open one seanpc OS X 2 Jun 9, 2010 04:34 PM
How to check if an NSCell is focused? ranguvar Mac Programming 0 Dec 9, 2009 12:43 PM
Anyone know how to check if a process is running on remote mac? dazey Mac Programming 4 Aug 26, 2009 03:31 AM
How to check if RAM pair is matched or not? prady16 Mac Basics and Help 3 Feb 28, 2008 11:25 PM
possible to check if an application is open with AppleScript? mjdth Mac Programming 1 Jan 23, 2006 12:19 AM


All times are GMT -5. The time now is 02:36 PM.

Mac Rumors | Mac | iPhone | iPhone Game Reviews | iPhone Apps

Mobile Version | Fixed | Fluid | Fluid HD
Copyright 2002-2013, MacRumors.com, LLC