C ++ TCP Server比较字符串失败

时间:2017-07-23 12:25:06

标签: c++ linux string sockets networking

我是C ++的新手,并决定更多地了解C ++如何利用套接字。我目前正在关注此tutorial

我想比较两个字符串。一个字符串是文字test,另一个字符串是从使用telnet的客户端收到的。但是,条件语句始终求值为false,随后代码块永远不会执行。我错过了什么?

以下是我遇到问题的代码:

while( (read = recv(sock , client_message , 2000 , 0)) > 0 )
    {


    std::string a = std::string(client_message);

    std::string b = std::string("test");

    std::cout << "string a" << a << std::endl;
    std::cout << "string b" << b << std::endl;


    if (a == "test")  {
        std::cout << "Strings match!";
    }



        write(sock , client_message , strlen(client_message));
    }

1 个答案:

答案 0 :(得分:0)

Telnet将发送CRLF,这将为您的client_message数组添加两个额外字节。在比较之前,您需要从该内容中修剪空格。

此外,代码std::string b = std::string("test");是多余的。只需std::string b = "test";,或者更好,但最好将其删除,因为您还没有在比较中真正使用它。