Skip to content

Instantly share code, notes, and snippets.

@kimar
Created July 3, 2013 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kimar/5916647 to your computer and use it in GitHub Desktop.
Save kimar/5916647 to your computer and use it in GitHub Desktop.
Returns available TCP Port in Objective-C / Cocoa
- (int) availableTcpPort
{
struct sockaddr_in addr;
socklen_t len = sizeof(addr);
addr.sin_port = 0;
inet_aton("0.0.0.0", &addr.sin_addr);
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
perror("socket()");
return -1;
}
if (bind(sock, (struct sockaddr*) &addr, sizeof(addr)) != 0) {
perror("bind()");
return -1;
}
if (getsockname(sock, (struct sockaddr*) &addr, &len) != 0) {
perror("getsockname()");
return -1;
}
return (addr.sin_port);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment