Почему chrome не устанавливает соединение сразу после поиска DNS? - PullRequest
0 голосов
/ 28 декабря 2018

У меня проблема в том, что 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 после поиска?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...