Языки сценариев используют сокеты точно так же, как и скомпилированные языки.
1) Сценарий обычно открывается и использует сокет. Он не «запускается» и не «вызывается» сокетом, а напрямую управляет им через библиотеки (обычно вызывая собственный C API для ОС).
2) Да.
3) Не обязательно. Большинство современных скриптовых языков могут обрабатывать несколько сокетов в одном «скриптовом» приложении.
4) Н / Д, см. 3)
Изменить в ответ на изменение вопроса и комментариев:
Теперь очевидно, что вы пытаетесь запустить это в контексте размещенного сервера. Как правило, если вы используете скрипты в Apache или аналогичном сервере, все работает немного иначе. Apache открывает и поддерживает сокет, и он выполняет ваш скрипт, передавая соответствующие данные (результаты POST / GET и т. Д.) В ваш скрипт для обработки. Сокеты обычно не вступают в игру, когда вы работаете со скриптами для CGI и т. Д.
Однако обычно это происходит с использованием тех же понятий, что и mod_cgi . Это в значительной степени означает, что выполняемый скрипт является не чем иным, как исполняемым файлом для сервера, а выходные данные исполняемого файла возвращаются клиенту. В этом случае (при условии, что у вас есть разрешения и правильные библиотеки на сервере), ваш скрипт на Python может фактически запустить отдельный скрипт, который выполняет свой собственный сокет полностью вне контекста Apache.
Однако (обычно) не очень хорошая идея запускать полную реализацию сокетов непосредственно внутри скрипта CGI. CGI ожидает, что исполняемый файл завершится, прежде чем он вернет результаты клиенту. Апач будет сидеть и немного "зависать", ожидая, пока это завершится. Если вы запускаете полноценный сервер (особенно если это длительный процесс, которым они обычно являются), Apache сочтет, что скрипт заблокирован и, возможно, прерывается, что потенциально может привести к его остановке (в зависимости от конфигурации, но большинство хостинговых компаний делают это для предотвращения загрузки сценариями ЦП в общей системе).
Однако, если вы выполняете новый сценарий из своего сценария, а затем возвращаетесь (закрывая исполняемый файл CGI), другой сценарий можно оставить работающим, работая как сервер. Это будет что-то вроде (пример Python, используя библиотеку subprocess ):
newProccess = Popen("python MyScript", shell=True)
Обратите внимание, что все вышеперечисленное действительно немного зависит от конфигурации сервера. Многие хостинговые компании не включают некоторые библиотеки сокетов или командных оболочек в свои реализации сценариев специально для предотвращения этого, поэтому вам часто приходится возвращаться к созданию исполняемого файла на C. Кроме того, это часто противоречит условиям обслуживания для большинства хостинговых компаний. - ты должен проверить свои.