Recv не работает в потоке — Windows C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Recv не работает в потоке — Windows C++

Сообщение Anonymous »

В настоящее время я разрабатываю TCP-сервер и использую многопоточность, поэтому для этого я инициализирую сервер с помощью Server.start(), который дает мне тип fd, а затем я инициализирую бесконечный цикл для принятия и запуска нового потока, например:

Код: Выделить всё

int main()
{
spdlog::set_pattern("[%H:%M:%S %z] [%^---%L---%$] [thread %t] %v");

Server server(9001);
int sockfd = server.start();

if (sockfd < 0)
{
spdlog::error("Cannot init server");
return 1;
}

while (true)
{
int fd = server.loop();
std::thread t(newclient, fd);
}
}

void newclient(int fd)
{
Handler handler;
handler.loop(fd);
closesocket(fd);
};
handler.loop:

Код: Выделить всё

void Handler::loop(int fd){
std::string buffer;

Communication communication(fd);

while(true){
buffer.erase();
buffer = communication.recv_str();
if (buffer == "") {
continue;
}
}
...
}
и communication.recv_str():

Код: Выделить всё

std::string Communication::recv_str(){
std::vector buffer(CHUNK_SIZE);
std::string rcv;
long bytes_received = 0;

do {
bytes_received = recv(fd, &buffer[0], CHUNK_SIZE, 0);

if ( bytes_received < 0 ) {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78461757/recv-doesnt-work-in-a-thread-windows-c[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ПРОБЛЕМА: Recv() - обработка данных с нескольких серверов. (C++11, сокеты, Windows, g++)
    Гость » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Гость
  • Socket.recv() никогда не возвращает малиновый пико в микропитоне _thread
    Гость » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Python-can bus.recv пропускает некоторые сообщения
    Anonymous » » в форуме Python
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • RECV не слушает. PYTHON [closed]
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Ошибка nginx Recv() (104: сброс соединения узлом) при чтении заголовка ответа из восходящего потока
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»