Ошибка компиляции с getaddrinfo - PullRequest
       1

Ошибка компиляции с getaddrinfo

1 голос
/ 26 февраля 2012

Я пытаюсь изучить основы программирования сокетов и использую некоторый код из руководства, которое нашел, но получаю ошибки компиляции. Код и ошибки показаны ниже

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

#define PORT "21467"

int main(void)
{
int status;
struct addrinfo hints;
struct addrinfo *servinfo; // will point to the results
memset(&hints, 0, sizeof hints); // make sure the struct is empty

hints.ai_family = AF_INET; 
hints.ai_socktype = SOCK_STREAM; // TCP stream sockets
hints.ai_flags = AI_PASSIVE; // fill in my IP for me

if ((status = getaddrinfo(NULL, PORT, &hints, &servinfo)) != 0) {
    //fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(status));
    exit(1);
}
// servinfo now points to a linked list of 1 or more struct addrinfos
// ... do everything until you don't need servinfo anymore ....
freeaddrinfo(servinfo); // free the linked-list

return 0;
}

Ошибки компиляции:

server.c: In function 'main':
server.c:16: warning: incompatible implicit declaration of built-in function 'memset'
server.c:24: warning: incompatible implicit declaration of built-in function 'exit'
Undefined                       first referenced
 symbol                             in file
getaddrinfo                         /var/tmp//ccU0yRDe.o
freeaddrinfo                        /var/tmp//ccU0yRDe.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status

Любая помощь будет принята с благодарностью!

1 Ответ

3 голосов
/ 26 февраля 2012

Если вы наберете man memset, вы увидите, что на странице руководства указано, что #include <string.h> требуется. Просто поместите это в начало файла. Сделайте то же самое для exit

EDIT

Требуется -lnsl -lsocket для связи (при условии, что Linux)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...