SO_PROTOCOL
OS X は、呼び出し元が「...ソケット タイプを整数として取得する」ことを可能にするソケット オプションを提供しません。( http://linux.die.net/man/7/socket )
つまり、次のプログラムは Linux でビルドして動作しますが、OS X ではコンパイルできません。
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char **argv)
{
int c, s, type, len;
len = sizeof(type);
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s < 0)
{
fprintf(stderr, "socket kaboom: %s\n", strerror(errno));
return 1;
}
if (getsockopt(s, SOL_SOCKET, SO_PROTOCOL, &type, &len) < 0)
{
fprintf(stderr, "getsosockopt kaboom: %s\n", strerror(errno));
return 1;
}
printf("socket type: %d\n", type);
return 0;
}
OS Xでこれを達成するにはどうすればよいですか?