我一直在用C进行套接字联网,这个应用程序将从客户端获取密码以便在服务器上进行验证。我已经设置了所有内容并且套接字通信但是当我发送一个字符串并使用strcmp()字符串时,尽管在打印时是相同的,但不会返回0(我相信这表示字符串是相同的)像这样:
请注意,客户端和服务器端是单独的程序,通过我的计算机上的localhost。
/*Client Side */
char password[64] = {0};
fgets(password, 64, stdin);
write(sockfd, password, 64);
/*Server Side */
char password[64] = "password";
char password_buffer[64];
read(newsockfd, password_buffer, 64);
if(strcmp(password, password_buffer) != 0)
{
printf("Password Incorrect\n");
{
else
{
printf("Password correct\n");
}
非常感谢任何帮助。我发现可能涉及使用bzero或memset,虽然我不确定这些是如何牵连的。
答案 0 :(得分:4)
$ARGUMENTS
可能会在字符串末尾添加一个尾随的换行符(fgets(password, 64, stdin);
)。在\n
之后从客户端字符串中删除它,或者在服务器端的比较字符串末尾添加一个。
要从客户端字符串中删除尾随换行符,请使用例如这样的:
fgets