Я объявил struct sockaddr_in server
в своей основной функции.Bind failed:: Семейство адресов не поддерживается семейством протоколов - C
я передать его в эту функцию, чтобы вернуть дескриптор файла сокета
int openSocket(char* ip_addr, int port, struct sockaddr_in* server){
int sockfd, len;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sockfd < 0){
perror("Failed to open socket: ");
exit(-1);
}
len = sizeof(server);
bzero(server, len);
server->sin_family= AF_INET;
inet_pton(AF_INET, ip_addr, &server->sin_addr);
server->sin_port= htons(port);
if((bind(sockfd, (struct sockaddr*)&server, len)) < 0){
perror("Bind failed: ");
exit(-1);
}
return sockfd;
}
структуры передаются в функцию, используя этот вызов
sockfd = openSocket(vector->ip_addr, vector->port, &server);
Однако я получаю следующее сообщение об ошибке.
Bind failed: : Address family not supported by protocol family
Также 'len' должен быть' 'socklen_t' не int'. – alk
@alk - Да, хорошая точка. – keithmo