【发布时间】:2020-11-29 19:38:54
【问题描述】:
您好,我有一个简单的身份验证客户端来获取用户名和密码,显示继续或拒绝,服务器用户名和密码设置为管理员并通过。但是,当我运行它时,只要管理员或用户名之一与服务器的用户名密码匹配,它就会显示继续。不知道出了什么问题,我使用 strcmp 比较 if 语句中的字符串的方式是否错误?
这是我的代码 authServer.c
char recvbuffer[BUFSIZE], sendbuffer[BUFSIZE], username[20], password[20],
usernameServer[20] = {"admin"}, passwordServer[20] = {"pass"};
sscanf(recvbuffer, "%s %s", username, password);
if((strcmp(usernameServer, username) && strcmp(passwordServer, password)) == 0)
{
snprintf(sendbuffer, sizeof(sendbuffer), "%s", PROCEED);
}
else
{
snprintf(sendbuffer, sizeof(sendbuffer), "%s", DENIED);
}
ssize_t numBytesSent = send(clntSock, sendbuffer, strlen(sendbuffer), 0);
authClient,它如何存储在sendbuffer中并通过send(sock,.....)发送到authServer.c
printf("\nEnter username (10 characters max):\n");
fgets(username, sizeof(username), stdin);
strcat(sendbuffer, username);
strcat(sendbuffer, " ");
printf("\nEnter password (10 characters max):\n");
fgets(password, sizeof(password), stdin);
strcat(sendbuffer, password);
strcat(sendbuffer, "\r\n\r\n");
【问题讨论】:
标签: c operator-keyword strcmp