Je continue d'obtenir une erreur d'argument non valide lorsque j'essaie de connecter le client au serveur. Quelques threads en ligne ont dit que cela peut arriver quand addrlen n'est pas correct, mais j'ai essayé de le changer à une valeur littérale après avoir compté la longueur et cela n'a pas fonctionné. J'ai aussi essayé juste strlen() sans chance. Quoi qu'il en soit, le code correspondant -BSD Sockets Argument invalide à la connexion
serveur -
struct sockaddr name;
int main(int agrc, char** argv) {
int sock, new_sd, adrlen; //sock is this socket, new_sd is connection socket
name.sa_family = AF_INET;
strcpy(name.sa_data, "127.0.0.1");
adrlen = strlen(name.sa_data) + sizeof(name.sa_family);
//make socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("\nBind error %m", errno);
exit(1);
}
//unlink and bind
unlink("127.0.0.1");
if(bind (sock, &name, adrlen) < 0)
printf("\nBind error %m", errno);
//listen
if(listen(sock, 5) < 0)
printf("\nListen error %m", errno);
//accept
new_sd = accept(sock, &name, (socklen_t*)&adrlen);
if(new_sd < 0) {
printf("\nAccept error %m", errno);
exit(1);
}
client -
int main(int agrc, char** argv) {
int sock, new_sd, adrlen;
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("\nserver socket failure %m", errno);
exit(1);
}
//stuff for server socket
name.sa_family = AF_INET;
strcpy(name.sa_data, "127.0.0.1");
adrlen = strlen(name.sa_data) + sizeof(name.sa_family);
cout<<"\nadrlen: "<<adrlen<<"\n";
if(connect(sock, &name, adrlen) < 0) {
printf("\nclient connection failure %m", errno);
exit(1);
}
Je ne vois rien qui puisse me tromper, mais je suppose que je pourrais juste être quelque chose ou pas au courant méconnais de quelque chose. Toute aide est appréciée.