Заставить PHP отвечать на telnet (PHP Telnet Server)
У меня есть проект, и он выглядит так:
Когда вы открываете консоль telnet и telnet на мой сервер, PHP должен ответить:: - Здравствуйте, как вас зовут?"
И вы вводите свое имя и так далее. Как я могу сделать это в PHP? Возможно ли это вообще?
2 ответа:
См. http://php.net/manual/en/book.sockets.php
Это хороший учебник, чтобы вы начали. http://devzone.zend.com/article/1086
И google здесь тоже ваш друг: http://www.google.ca/search?q=php + сокет+сервер
Фактический TELNET может быть немного трудно получить правильный; есть много управляющих последовательностей, которые используются, чтобы повлиять на то, как терминал отображает свое содержимое.
Если вы просто хотите написать сервис, который люди могут использовать через TELNET, то, вероятно, было бы лучше использовать существующий сервер TELNET (Ubuntu имеет несколько пакетов, доступных для простого TELNET:
inetutils-telnetd
,telnetd
; для зашифрованного TELNET:telnetd-ssl
; для Kerberos-аутентифицированный TELNET:heimdal-servers
,krb5-telnetd
.) к обеспечьте функциональность TELNET и установите свою PHP-программу в качестве оболочки входа для любого пользователя, от имени которого вы хотите, чтобы все входили. (Смотритеpasswd(5)
для получения информации о оболочке входа.)Если вы хотите выполнить все операции сокета самостоятельно, то вам нужно будет использовать поддержку сокетов BSD; создайте сокет, привязка имени сервера к сокету, прослушайте сокет, и когда появится новое соединение, разветвляйте новый процесс для обработки нового соединения. клиент и принимают новое соединение.
После создания нового процесса с подключенным клиентом можно использовать стандартные операции чтения и записи для отправки и получения данных клиенту. Если вы действительно хотите поддерживать полную спецификацию TELNET, это потребует некоторого умного программирования. Если вы не возражаете против отсутствия доступа к расширенным функциям терминала (например, предоставляемымreadline(3)
,ncurses(3)
, илиslang
), то вам может понадобиться отбросить символы с включенным восьмым битом, чтобы получить от управления telnet персонажей из ваших клиентов. (Я не пробовал этого, потому что я всегда использовал инструментnetcat
, Когда я хотел чистое незашифрованное и неаутентифицированное соединение между хостами.)