我正在编写一个多路复用的客户机/服务器,我的服务器在收到客户机的登录命令后,会等待帐户数据,但会收到一个空结构,我不知道为什么。这是我的代码:
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!:)

08-17 23:34