У меня проблема в том, что Chrome что-то ждет после поиска DNS, прежде чем устанавливать соединение.Моя проблема -> (https://imgur.com/qA5ADOa) На рисунке вы можете видеть, что после поиска DNS большой разрыв и запрос занимает 313 мс, хотя все значения вместе составляют максимум 16 мс. Apache на этом снимке -> (https://imgur.com/UI4ToDu). Что делает Apache, что проблема не возникает? На этом рисунке вы очень хорошо видите, что проблема не возникает в Apache.
Я пишу простой веб-сервер на C ++ только для практики. Я тестируювеб-сервер с браузером Chrome. Код очень прост и не обрабатывает ошибок, здесь часть после создания сокета с жестко закодированным ответом:
std::memset(&myAddr, 0, sizeof(myAddr));
myAddr.sin_family = AF_INET;
myAddr.sin_addr.s_addr = INADDR_ANY;
myAddr.sin_port = htons(80);
bind(acceptSock, (sockaddr *)&myAddr, sizeof(myAddr));
listen(acceptSock, 5);
clientSock = accept(acceptSock, (sockaddr *)&clientAddr, &clientAddrLen);
std::vector<char> recvbuf(BUFFER_LENTH);
recv(clientSock, &recvbuf[0], recvbuf.size(), 0);
std::ifstream file("index.html");
if (file.is_open()) {
std::string content;
std::string buf;
while (std::getline(file, buf)) {
content += buf;
buf.clear();
}
file.close();
size_t contentLength = content.size();
std::string sendbuf = "HTTP/1.1 200 OK\r\n";
sendbuf += "Content-Type: text/html; charset=UTF-8\r\n";
sendbuf += "Content-Length: " + std::to_string(contentLength) + "\r\n";
sendbuf += "Server: meinWebServer\r\n";
sendbuf += "\r\n";
sendbuf += content;
send(clientSock, sendbuf.c_str(), sendbuf.size(), 0);
}
- Что я могу сделать, чтобы предотвратить эту проблему?
- Почему и что ждет Chrome после поиска?