Предполагается, что сервер - это Linux машина с одним из двух устройств:
/dev/ttySx
'isdn4linux'
, включенным как устройство
/dev/ttyIx
$ cat /usr/sbin/modemd
#!/usr/bin/perl
select((select(STDOUT), $| = 1)[$[]);
select((select(STDIN), $| = 1)[$[]);
exec 'cu -s 115200 -l /dev/ttyS1';
die '$0: Cant exec cu: $!\n';
Модем-демон запускается процессом INETD, если клиент подключается к
соответствующему порту, как описано ниже. 'modemd'
просто соединяет
обработчик сокета с потоками STDIN и STDOUT команды 'cu'
и разрешает
'cu'
работать с модемом. если у вас нет 'cu'
, инсталлируйте пакет 'UUCP'
,
'cu'
обычно входит в пакет 'UUCP'
.
Процессу INETD надо дать знать о существовании modemd. Отредактируйте
файл настроек, обычно это /etc/inetd.conf
:
#
# modem daemon
#
modem stream tcp nowait root /usr/sbin/tcpd /usr/sbin/modemd /dev/ttyS1
Чтобы это заработало, нужно добавить в '/etc/services' :
modem 2006/tcp modemd
Эта запись связывает символическую ссылку с указанным портом (2006)
Номер порта должен быть любым незанятым другим сервисом.
После этих изменений надо перезапустить inetd, чтобы он перечитал сви настройки.
$ ps |grep inetd
194 ? S 0:00 /usr/sbin/inetd
$ kill -HUP 194
Серверная сторона готова к приему клиентов. Правильность настроек можно
проверить:
$ telnet localhost modem
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Сейчас вы подключены к модему. Вы можете ввести команду 'AT'
для проверки
настройки:
atz
atz
OK
ati1
ati1
Linux ISDN
OK
^]
telnet>quit
$
Вместо использования Perl-скрипта в качестве модемного сервера можно также
использовать программу 'mserver'
. Ее можно взять на
ftp://ftp.innet.be/pub/staff/carl/. Если ссылка не работает, воспользуйтесь
'archie'
или другим средством поиска. Пока что я не имел удовольствия
ставить и использовать mserver
.