Программирование клиент-сервер

  • Здесь код выполняет требуемый вывод отлично
  • Он проверяет условие и печатает ошибку, если условие не выполнено, но также печатает, даже если условие истинно и соблюдает требуемый вывод.
  • найти проблему в небольшом, если еще условие
  • как это можно исправить
  • В приведенном ниже кодеif (fork() == 0) & if (!request.compare("") == 0) не имеет никакого эффекта

    /* Loop forever */
    while (1)
    {
    /* Accept a client connection */
    clientFd = accept (serverFd, clientSockAddrPtr, (socklen_t*)&clientLen);
    
    //Fork child
    //if (fork() == 0)
    {
    while(1)
    {   //Reads the client
    string request = read_Request (clientFd);
    bool found = false;
    string response="Error !!! Country not found";
    //if (!request.compare("") == 0)
    {
    
    for(vector<Country>::iterator it = countryData.begin(); it != countryData.end(); it++)
    {
    if(request.compare(it -> name) == 0)
    {
    string countryName = it -> name;
    response += "\n";
    response += it -> name;
    response += "'s TLD Code";
    response += ((countryName).append("'s TLD Code"));
    response += ": ";
    response += it -> TLDCode;
    response += "\n";
    
    countryName = it -> name;
    response += it -> name;
    response += "'s FIPS104 Country Code";
    response += ((countryName).append("'s FIPS104 Country Code"));
    response += ": ";
    response += it -> FIPS104CountryCode;
    response += "\n";
    
    countryName = it -> name;
    response += it -> name;
    response += "'s ISO2 Country Code";
    response += ((countryName).append("'s ISO2 Country Code"));
    response += ": ";
    response += it -> ISO2CountryCode;
    response += "\n";
    
    countryName = it -> name;
    response += it -> name;
    response += "'s population";
    response += ((countryName).append("'s population"));
    response += ": ";
    response += it -> population;
    response += "\n";found = true;
    
    }
    }
    }write (clientFd, response.c_str(), strlen (response.c_str()) + 1);
    }
    }
    
    close (clientFd);
    }
    

    }

Вот фрагмент вывода

Ответ строки печатается в случае как true, так и false.

Любые предложения, пожалуйста

0

Решение

Итак, здесь вы назначаете строку для переменной response
String response="Error !!! Country not found";

затем здесь вы соединяете другую строку с ответом, который дает вам ваш вывод.

response += "\n";
response += it -> name;

т.е. ошибка !!! Страна не найдена + \ n + it-> имя и т. Д.

Во-вторых, как @ ChrisJ.Kiick сказал, что у вас есть таинственный тип String, который не является частью языка c

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]