尝试让服务器等待客户端(套接字编程)

时间:2018-09-21 04:29:35

标签: c sockets tcp

我正在尝试让服务器等待客户的响应。我正在尝试从客户端获取用户名和密码。这是我的客户功能:

 /* Wait for the game to start. */
    do {
        recv_msg(sockfd, msg);
        char username[9], password[9];
        if (!strcmp(msg, "USN")){
            printf("\nUsername: \n");
            scanf("%s", username);
            write_server_msg(sockfd, username);
        }

        if (!strcmp(msg, "PSW")){
            printf("\nPassword: \n");
            scanf("%c", password);
            write_server_msg(sockfd, password);
        }
    } while ( strcmp(msg, "SRT") );

这是我的服务器端:

void authenticate_process(int cli_sockfd){

    /* Authentication Process */
    write(cli_sockfd, "USN", sizeof(int));
    printf("MADE IT");
    char *username;
    username = recv_msg(cli_sockfd);
    printf("[DEBUG] Client username is %s.\n", username);

    write(cli_sockfd, "PSW", sizeof(int));
    char *password;
    password = recv_msg(cli_sockfd);
    printf("[DEBUG] Client Password is %s.\n", password);
    write(cli_sockfd, "SRT", sizeof(int));

}

对于客户端,我的终端输出如下:

Username: 
morgan
Game over.

我的服务器的终端输出是:

DEBUG] Client username is morgan.
[DEBUG] Client Password is .

我无法使函数正确移入代码的“密码”部分。它以某种方式移入其中,但是从不提示用户输入内容,而是似乎在向前移动。我在服务器端的接收消息功能如下:

char *recv_msg(int sockfd)
{
    int length;
    char *msg;
    msg = (char*) malloc (9);

    int n = read(sockfd, msg, 9);

    free(msg);
    return msg;

}

有什么我想念的吗?我只希望代码提示用户输入用户名,然后提示用户输入密码。

0 个答案:

没有答案
相关问题