Заставить PHP отвечать на telnet (PHP Telnet Server) - PullRequest
2 голосов
/ 03 ноября 2011

У меня есть проект, который нужно выполнить, и он выглядит следующим образом:

Когда вы открываете консоль telnet и telnet для моего сервера, PHP должен ответить: «Здравствуйте, как вас зовут?»

И вы вводите свое имя и так далее.Как я могу сделать это в PHP?Это вообще возможно?

Ответы [ 2 ]

5 голосов
/ 03 ноября 2011

См. http://php.net/manual/en/book.sockets.php

Это хороший учебник, с которого можно начать. http://devzone.zend.com/article/1086

И гугл здесь тоже твой друг: http://www.google.ca/search?q=php+socket+server

0 голосов
/ 03 ноября 2011

Фактический 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, когда хотел clean незашифрованное и неаутентифицированное соединение между хостами.)

...