【发布时间】:2014-02-01 17:38:59
【问题描述】:
- 这里的代码完美地执行了所需的输出
- 它会检查条件并在条件不为真时打印错误,但即使条件为真且遵循但需要的输出,它也会打印。
- 在一个小的 if else 条件下发现问题
- 如何纠正
-
在下面的代码中
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); }}
在真假的情况下打印字符串响应。
有什么建议
【问题讨论】:
-
您的代码中没有任何内容打印字符串响应。它是不完整的。另外,这似乎不是 C:C 中没有字符串类型。
-
@ChrisJ.Kiick,我已经对代码进行了更改。
标签: c++ unix client-server serversocket fork