Интересует вот такие вот вотпросы.
1) через TCP соединены Linux программа и Windows программа.
Если я в Linux программе делаю send с флагом MSG_OOB, то сможет ли Windows приложение получить данные если делает recv без флага MSG_OOB ?
Если да, то будет ли толк от этого? Данных буквально 12 байт шлется.
Или обязательно необходимо чтобы и recv был с флагом MSG_OOB ?
2) в чем может быть ошибка при следующей сетуации:
- Серверное приложение под линукс открывает 2 порта.
- Клиенты - windows приложения. коннектятся на первый порт
- При некоторых условиях клиенту шлется сообщение чтобы он подключился на второй порт.
- При учачном или неудачнмо коннекте клиентом отсылаются данные о результате подключения.
И вот заметил такую вешь: Когда одновременно допустим 150 клиентам дать команду коннекта на второй порт то сыпятся такие вот ошибки:
1) клиент не получает сообщения. хотя на серверноей стороне send вернул что всё норм. Встречается редко.
2) А вот более частая сетуация: у клиента connect на второй порт вылетает по таймауту. Хотя на серверной стороне нет никаких промедлений. т.е. после accept сокет сразу добавляется в epoll. в listen задана очередь 1000.
При этом добавления судя по логу идут мгновенно.
Наиболее ответ интересует по поводу второй ошибки. Такое ощущение что чтото с конфигом TCP.