我正在编写一个多路复用的客户机/服务器,我的服务器在收到客户机的登录命令后,会等待帐户数据,但会收到一个空结构,我不知道为什么。这是我的代码:
Server:
autentica function:
client login function:
我试图使用sleep()函数,但它没有工作。
有什么建议吗?
最佳答案
我没有看到所有的密码,因为这里是夜晚!!! :)
但我看到autentica(autentica.c)函数的代码似乎用错了strcmp!我想这可能是个问题!
它是:
while (!feof(file)) {//legge finchè non finisce il file
fread(&acc_to_cmp, sizeof(acc_to_cmp), 1, file);//recupera un account dal file
if (strcmp(account.matricola, acc_to_cmp.matricola)) {//se l'utente esiste
if (strcmp(account.password, acc_to_cmp.password)) {//controlla la password
write(fd, (comm_t *)OK, sizeof(comm_t));//se coincidono concedi l'accesso
fclose(file);
return 1;
}
else{//se non coincidono
write(fd, (comm_t *)WRONG_PASS, sizeof(comm_t));//nega l'accesso
fclose(file);
return 0;
}
}
}//se l'utente non esiste
我想应该是:
while (!feof(file)) {//legge finchè non finisce il file
fread(&acc_to_cmp, sizeof(acc_to_cmp), 1, file);//recupera un account dal file
if (!strcmp(account.matricola, acc_to_cmp.matricola)) {//se l'utente esiste
if (!strcmp(account.password, acc_to_cmp.password)) {//controlla la password
write(fd, (comm_t *)OK, sizeof(comm_t));//se coincidono concedi l'accesso
fclose(file);
return 1;
}
else{//se non coincidono
write(fd, (comm_t *)WRONG_PASS, sizeof(comm_t));//nega l'accesso
fclose(file);
return 0;
}
}
}//se l'utente non esiste
当两个字符串相等时,strcmp函数返回0!:)