В приведенном ниже коде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.
Любые предложения, пожалуйста
Итак, здесь вы назначаете строку для переменной response
String response="Error !!! Country not found";
затем здесь вы соединяете другую строку с ответом, который дает вам ваш вывод.
response += "\n";
response += it -> name;
т.е. ошибка !!! Страна не найдена + \ n + it-> имя и т. Д.
Во-вторых, как @ ChrisJ.Kiick сказал, что у вас есть таинственный тип String, который не является частью языка c
Других решений пока нет …