我正在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