В: Как процесс может выполнить код, отправленный с другого компьютера?
A: Как правило, это плохая идея, поскольку проблемы безопасности трудно полностью изучить. Однако это можно сделать, сохранив доставленный по сети код в отдельный исполняемый файл, а затем запустив эту новую программу. Это также можно сделать на большинстве систем, просто обработав необработанные байты, полученные как код; загрузите байты в кучу (не в стек!), приведите адрес к указателю функции и вызовите его. Опять же, это почти наверняка плохая идея .
В: Может ли процесс прослушивать несколько портов одновременно?
A: Да. Кстати, HTTPS - это порт 443. HTTP - это порт 80.
В: Могут ли несколько процессов прослушивать один и тот же порт (с одним и тем же протоколом, по одному и тому же адресу)?
A: Нет. Другие процессы могут быть в состоянии подслушивать и также получать пакеты, но они не связаны напрямую с портом. Как правило, только один процесс может быть связан с данным протоколом / портом / адресом с тремя кортежами.
В: Как реализована блокировка при прослушивании на сокете?
A: По операционной системе, по-своему. Обычно поток переводится в состояние «блокирования», когда он вызывает accept
, read
или poll
/ select
в неподготовленном сокете, и не будет получать процессорное время, пока не поступят некоторые данные. 1019 *