• Сколько клиентов могут одновременно передавать данные на один UDP порт (windows)?

    @Olegtm Автор вопроса
    Вы пишите:
    Считывание из этого сокета идёт последовательно в порядке прихода пакетов

    То есть если у меня 100000 клиентов, то все данные попадают в одну очередь, из которой моё приложение может считывать данные только последовательно?
  • Сколько клиентов могут одновременно передавать данные на один UDP порт (windows)?

    @Olegtm Автор вопроса
    vreitech,
    средства для квази-параллельной работы с множеством клиентов

    Вот в этом собственно и вопрос:
    Для TCP, при подсоединении нового клиента, после Socket.EndAccept возвращается новый Socket, котрый принимает данные по ".BeginReceive", и независимо от остальных соединений, то-есть паралельно
    А для UDP есть только "BeginReceiveFrom" который "общий" для всех клиентов, подключённых к этому порту, то-есть пока конкретный "AsyncCallback" не отработает, и не вызовет заново BeginReceiveFrom, пакет с другого клиента (который уже возможно принят и ждёт в очереди), прочитать не получится
    Что я упускаю? Можно ссылку не конкретный пример
    квази-параллельной работы
    для UDP?
  • Сколько клиентов могут одновременно передавать данные на один UDP порт (windows)?

    @Olegtm Автор вопроса
    Вопрос ов производительности:
    в TCP для 10000 сокетов приём может выполняться паралельно (в зависимости от количества свободных ядер CPU
    а вот для UDP для одного входящего (слушаещего) порта чтение в клиенте идёт последовательно, то есть пока один вызов не отработал, следующий ждёт, даже если в буфере Windows есть данные от "другого" клиента. То-есть ресурсы машины не используются по полной и общая производителность будет ниже чем TCP (естественно в случае если приём пакетов это единственное "узкое" место)
    Так ли это?
    Если да, то как решают эту проблему? (уверен я не первый который общаенся по UDP с десятками тысяч устройств одновременно...
  • Сколько клиентов могут одновременно передавать данные на один UDP порт (windows)?

    @Olegtm Автор вопроса
    Пользуюсь recvfrom, с адресом отправителя проблем нет
    Вопрос о производительности:
    recv в TCP для 10000 сокетов может выполняться паралельно (в зависимости от количества свободных ядер CPU (так ли это?)
    а вот recvfrom для UDP для одного входящего (слушаещего) порта и 10000 клиентов - последовательно, то есть пока один вызов не отработал, следующий ждёт, даже если в буфере Windows есть данные от "другого" клиента. Тоесть ресурсы машины не используются по полной и общая производителность будет ниже чем TCP (естественно в случае если приём пакетов это единственное "узкое" место
    Так ли это?
    Если да, то как решают эту проблему? (уверен я не первый который общаенся по UDP с десятками тысяч устройств одновременно...