В приложении запускаются несколько потоков, в каждом потоке запускается TcpListener, слушающий порт. Все работает как должно быть до тех пор, пока не запускается 163ий поток. При запуске TcpListener'а на нем появляется ошибка "Невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена". Подскажите в чем может быть проблема?
Здравствуйте, seawolf, Вы писали:
S>В приложении запускаются несколько потоков, в каждом потоке запускается TcpListener, слушающий порт. Все работает как должно быть до тех пор, пока не запускается 163ий поток. При запуске TcpListener'а на нем появляется ошибка "Невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена". Подскажите в чем может быть проблема?
Проблема может быть в том, что невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: Ошибка при запуске нескольких TcpListener в разных по
Задумайтесь, а может нельзя в данной вам ОС одному процессу слушать 500 сокетов, может это объективное ограничение? Это не такая простая ( для системы ) задача. Вы напишите, зачем вам это нужно: 99%, что вы что то недопонимаете, возможно существует другое, гораздо более изящное решение?
Да пребудет с тобою сила
Re[2]: Ошибка при запуске нескольких TcpListener в разных по
ДД>Проблема может быть в том, что невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена.
Капитан Очевидность спешит на помощь...
Да здравствует мыло душистое и веревка пушистая.
Re[3]: Ошибка при запуске нескольких TcpListener в разных по
Здравствуйте, TarasCo, Вы писали:
TC>Задумайтесь, а может нельзя в данной вам ОС одному процессу слушать 500 сокетов, может это объективное ограничение? Это не такая простая ( для системы ) задача. Вы напишите, зачем вам это нужно: 99%, что вы что то недопонимаете, возможно существует другое, гораздо более изящное решение?
Дело в том, что в реальном приложении как раз каждый сокет слушается в отдельном потоке и там появляется эта ошибка.
Re[4]: Ошибка при запуске нескольких TcpListener в разных по
Здравствуйте, seawolf, Вы писали:
S>Здравствуйте, TarasCo, Вы писали:
TC>>Задумайтесь, а может нельзя в данной вам ОС одному процессу слушать 500 сокетов, может это объективное ограничение? Это не такая простая ( для системы ) задача. Вы напишите, зачем вам это нужно: 99%, что вы что то недопонимаете, возможно существует другое, гораздо более изящное решение?
S>Дело в том, что в реальном приложении как раз каждый сокет слушается в отдельном потоке и там появляется эта ошибка. Число 500 тоже дано для примера, в реальном приложении это число настраивается. Делов в том что приложение эмулирует несколько сотен контроллеров, каждый из которых слушает определенный порт.
Re[5]: Ошибка при запуске нескольких TcpListener в разных по
Здравствуйте, TarasCo, Вы писали:
TC>Задумайтесь, а может нельзя в данной вам ОС одному процессу слушать 500 сокетов, может это объективное ограничение? Это не такая простая ( для системы ) задача. Вы напишите, зачем вам это нужно: 99%, что вы что то недопонимаете, возможно существует другое, гораздо более изящное решение?
Дело в том, что в реальном приложении как раз каждый сокет слушается в отдельном потоке и там появляется эта ошибка. Число 500 тоже дано для примера, в реальном приложении это число настраивается. Делов в том что приложение эмулирует несколько сотен контроллеров, каждый из которых слушает определенный порт.
Re[6]: Ошибка при запуске нескольких TcpListener в разных по
Здравствуйте, seawolf, Вы писали:
S>ЗДелов в том что приложение эмулирует несколько сотен контроллеров, каждый из которых слушает определенный порт.
Лично у меня как-то слабо ассоциируется производительность нескольких сотен контроллеров, каждый из которых умеет делать TCP, и производительность одного сервера. Вы уверены, что эти несколько сотен контроллеров могут быть корректно проэмулированы на одном сервере? А если некорректно (т.е. при эмуляции получатся совсем другие временнЫе характеристики, нежели у реальных устройств), то какой смысл в такой эмуляции? Не лучше ли эмулировать, скажем, не более чем по 100 контроллеров на сервер? Плюс где-то рядом с этой цифрой также находится и "разумное" количество работающих потоков (такое, когда их взаимная толкотня еще не очень влияет).
Re[3]: Ошибка при запуске нескольких TcpListener в разных по
От:
Аноним
Дата:
12.02.09 19:03
Оценка:
Здравствуйте, Vamp, Вы писали:
ДД>>Проблема может быть в том, что невозможно выполнить операцию на сокете, т.к. буфер слишком мал или очередь переполнена. V>Капитан Очевидность спешит на помощь...
Так причина ошибки и так названа. "Я затыкаю дырки пальцами. Почему-то при затыкании одиннадцатой дырки я не могу найти свободный палец".
Автору: прочитать про I/O Completion ports и про выделение памяти под потоки. После прочтения составить конспект на тему сильных и слабых сторон модели "один коннект = один поток".
Re[4]: Ошибка при запуске нескольких TcpListener в разных по
А>Автору: прочитать про I/O Completion ports и про выделение памяти под потоки. После прочтения составить конспект на тему сильных и слабых сторон модели "один коннект = один поток".
При чем тут коннекты? Автор не так примитивен!! Он хочет слушать тыщу разных портов одновременно. И кол-во потоков тут не основная проблема.