Я пытаюсь написать многопотоковый сервер в python, который может получить несколько клиентских запросов, а затем отправить ответ в пакете UDP (порт 53). Мне было интересно, могут ли все эти потоки использовать 53 одновременно. Большое спасибо (этот вопрос может показаться глупым, я новичок)может использовать несколько потоков один и тот же порт
ответ
Просьба не делать этого. Вместо этого используйте Twisted. У этого уже есть все такое.
Если вы укажете опцию «reuse port», то да, вы можете связать несколько сокетов для прослушивания с одним и тем же портом. Но по моему опыту, даже при этом, только один из сокетов получит любой пакет (если вы не принимаете многоадресные пакеты).
mySocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
Обычно, хотя, когда вы говорите о «многопоточном сервере», вы говорите о сервере, используя «ориентированного соединения» протокол (TCP над, а не UDP), где есть сокет-сервер прослушивает соединения , а затем, когда соединение сформировано, оно создает поток для борьбы с ним.
Для многопоточного UDP-сервера у вас, вероятно, будет один сокет, который ставит в очередь входящие запросы и имеет несколько потоков, вытягивающих из очереди и выполняющих работу. Нити сами по себе не должны иметь дело с сокетом.
(Примечание: В зависимости от платформы, вы, возможно, придется использовать SO_REUSEADDR вместо Некоторая информация here.).
- 1. Несколько потоков, читающих один и тот же файл, один обработчик
- 2. Несколько программ, использующих один и тот же порт UDP? Возможное?
- 3. Несколько процессов, прослушивающих один и тот же порт?
- 4. Несколько потоков используют один и тот же SimpleDateFormat без ThreadLocal
- 5. Nginx несколько серверных блоков, прослушивающих один и тот же порт
- 6. Несколько процессов socket.io используют один и тот же порт?
- 7. Может ли несколько потоков использовать один и тот же client.id в apache kafka?
- 8. Несколько потоков Java, похоже, блокируют один и тот же монитор?
- 9. Несколько потоков имеют один и тот же замок?
- 10. Несколько потоков, записывающих один и тот же CSV в Python
- 11. несколько потоков, вызывающих один и тот же метод в C#
- 12. Несколько потоков, прослушивающих один порт UDP?
- 13. SerialPort.GetPortNames возвращает тот же порт несколько раз
- 14. Может ли несколько статусов иметь один и тот же media_id?
- 15. Может ли несколько потоков изменять один и тот же частный член объекта C++, вызывая тот же метод этого объекта?
- 16. Может ли несколько потоков многопоточного приложения открывать сокеты на один и тот же сервер?
- 17. Пусть два UDP-сервера прослушивают один и тот же порт?
- 18. Как рабочие процессы прослушивают один и тот же порт
- 19. Как повторно использовать один и тот же LinearLayout несколько раз
- 20. Установить/использовать один и тот же комплект несколько раз
- 21. Возможно, удастся использовать один и тот же экземпляр несколько раз
- 22. Может ли два разных экземпляра сокета прослушивать один и тот же порт TCP (порт уже используется)
- 23. Capybara, получающий один и тот же сеанс из двух потоков
- 24. BeanIO Запись двух потоков в один и тот же файл
- 25. Имеет ли два IP-адреса один и тот же порт?
- 26. Может ли быть столкновение, если два потока записываются в один и тот же последовательный порт?
- 27. Переведите один и тот же объект несколько раз в один и тот же раскадровку
- 28. Несколько серверов TCP/IP и один и тот же «известный порт» ... как-то?
- 29. Несколько shared_ptrs на один и тот же объект, один поврежден
- 30. докер режим роя несколько служб и тот же порт
Downvoter: вы отрицать, что плакат должен использовать Twisted, а не изобретать свои собственные вещи? – 2010-12-07 06:53:29