在ENTER之后,scanf()无法正常工作

时间:2014-03-19 13:23:32

标签: c scanf

我从服务器到客户端制作这个简单的例子,服务器作为echo服务器运行!因此,客户端从用户获取输入并将其发送到服务器,然后服务器将其发回。

我只是停留在用户的输入上。我使用了getchar,scanf和fgets之类的东西。但是当我开始输入并按下ENTER时,它应该继续执行程序中的下一件事......可悲的是,它已经发生了。

以下是我的消息部分代码:

while(1)
{
    char message[1000], servermessage[1000];

    printf("You: ");
    scanf("%s", message);
    printf("%s\n", message);

    if (send(sock, message, strlen(message), 0) < 0) 
    {
        printf("sending failed\n");
        return (EXIT_FAILURE);
    }

    int received = recv(sock, servermessage, sizeof(servermessage), 0);
    if (received < 0) 
    {
        printf("received failed\n");
        return (EXIT_FAILURE);
    }

    servermessage[received] = '\0';
    printf("Server: %s\n", servermessage);
}

close(sock);

1 个答案:

答案 0 :(得分:1)

第一次输入后,你调用recv(),它会阻塞,直到有一些数据要读,你的客户端没有读取任何数据,所以没有任何反应。您需要检查您的echo服务器以找出错误。如果您需要使用echo服务器来测试客户端,则可以使用服务器here的代码。