我正在Linux中进行一些套接字编程,并且想知道当函数套接字(...)时如何获取错误代码;失败。不过,我想要做的,采用socket(...)功能类似的事情在Linux中创建套接字时获取错误代码
//Resolve the server address and port
result = (struct addrinfo *) calloc(1, sizeof(struct addrinfo));
iResult = getaddrinfo("google.com", DEFAULT_PORT, &hints, &result);
if (iResult != 0){
printf("%d\n", iResult);
fprintf(stderr, "getaddrinfo failed: %s\n", gai_strerror(iResult));
getchar();
exit(EXIT_FAILURE);
}
:
例如对于“的getaddrinfo”功能,我可以做到这一点。
根据此: http://linux.die.net/man/2/socket
该函数返回-1失败,并设置errno为相应的错误号。我如何访问这个“errno”? 这是我到目前为止的代码:
int connectSocket = 0;
connectSocket = socket(AF_INET, SOCK_STREAM, 0);
printf("%d\n", connectSocket);
if (connectSocket == -1){
printf("socket failed with error: %s\n", error_string); //TODO: HELP DECLARING error_string
getchar();
exit(EXIT_FAILURE);
}
见'错误号(3 )'和'strerror(3)'手册页。 – 2014-11-24 02:28:52
不要为在'getaddrinfo()'的最后一个参数中传递的'addrinfo'分配内存。它会为你分配'addrinfo',你传递给'freeaddrinfo()'释放它:'result = NULL; iResult = getaddrinfo(...,&result); if(iResult == 0){...; freeaddrinfo(结果); }' – 2014-11-24 06:29:00