|
UDP Сервер
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые коллеги! Собственно задача, есть серверный поток слушающий порт Код: c# 1. 2. 3. 4. 5.
Сейчас все работает нормально, но боюсь что с ростом нагрузки могут возникнуть проблемы. 1) Что если, например пока первый полученный пакет не будет обработан, придет второй. О просто будет ждать пока снова не будет вызван метод Listener.Receive(ref rep); или будет потерян? 2) Что если придут почти одновременно два пакета? Один из них будет потерян? Или они оба подряд будут помещены в packege? Или первый пакет будет помещён в packege, а второй останется ждать второго вызова Listener.Receive(ref rep);? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 16:38 |
|
UDP Сервер
|
|||
---|---|---|---|
#18+
pation, я отлично понимаю как устроен UDP, меня интересует как устроен класс UdpClient в .NET, а точнее его метод Receive. В некоторых примерах в инете я видел что этот метод вызывается одновременно несколькими потоками одновременно и потом они разбирают пакеты. Я хочу понять зачем это сделано, просто, чтобы параллельно обслуживать несколько источников данных или есть вероятность, что пока обрабатывается один пакет, следующий будет потерян если снова не вызвать метод Receive. Так же интересно что, если за это время придет 2 пакета. Попадут ли они в общий packege, или метод Receive надо будет вызвать 2 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2014, 11:36 |
|
UDP Сервер
|
|||
---|---|---|---|
#18+
palich12В некоторых примерах в инете я видел что этот метод вызывается одновременно несколькими потоками одновременно и потом они разбирают пакеты а вы ссылки на эти примеры приложите, чтобы не обсуждать абстракции ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2014, 12:11 |
|
UDP Сервер
|
|||
---|---|---|---|
#18+
В общем, не найдя нужной информации, провел простой эксперимент Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Из которого стало ясно что если несколько раз отправить пакеты, то получить их можно, вызывая метод получения столько же раз. При этом можно сначала отправить, а только потом, вызвать метод получения. Соответсвенно ответы на вопросы: 1) Хранит полученные пакеты в некой внутренней очереди не зависимо от того, вызван метод Receive или нет 2) отдает пакеты по одному при вызове Receive. Сколько пакетов получено, столько же раз нужно вызвать Receive ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2014, 13:56 |
|
|
start [/forum/topic.php?fid=20&fpage=129&tid=1403303]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 460ms |
0 / 0 |