ПРОБЛЕМА: Recv() - обработка данных с нескольких серверов. (C++11, сокеты, Windows, g++)C++

Программы на C++. Форум разработчиков
Гость
ПРОБЛЕМА: Recv() - обработка данных с нескольких серверов. (C++11, сокеты, Windows, g++)

Сообщение Гость »

В качестве простого проекта для понимания программирования сокетов и многопоточности на C++ я создал 2 сервера и один клиент. Цель состоит в том, чтобы клиент параллельно считывал данные с обоих серверов.
Оба сервера выглядят одинаково, имеют одинаковый IP-адрес (127.0.01), но разные номера портов ( 8000 и 4000). Они оба считывают данные из файла csv и отправляют их в цикле следующим образом:

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

std::ifstream _file_stream;

_file_stream.open("data.csv", std::ifstream::in);

char[512] _send_buffer;

int _send_buffer_size = 512;

while(!_file_stream.eof())

{

std::string line;

_file_stream>>line;

strcpy(_send_buffer,line.c_str());

int send_return = send(s, _send_buffer, _send_buffer_size, 0);

}
Вот что происходит на стороне клиента:
  • Если я запускаю цикл, содержащий две функции Recv() на двух серверах все нормально и все данные получены:

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

int recv_return_server1 = recv(_client_socket_server1, recv_buffer_server1, recv_buffer_server1_size, 0);
int recv_return_server2 = recv(_client_socket_server2, recv_buffer_server2, recv_buffer_server2_size, 0);
std::cout

Подробнее здесь: [url]https://stackoverflow.com/questions/78106173/issue-recv-ing-data-from-multiple-servers-c11-sockets-windows-g[/url]

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