Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Сетевое программирование > Подключение к АТС по протоколу smdr


Автор: eda-76 06.06.16, 07:25
Приветствую
подскажите как подключиться к АТС по протоколу smdr из дельфи? putty подключается, а в дельфи делаю:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Mysocket := TClientSocket.Create(nil);
        Mysocket.Address := '192.168.0.101';
        Mysocket.Port := 23;
        Mysocket.OnRead := ClientSocket1Read;
        Mysocket.OnError := ClientSocket1Error;
        Mysocket.Active := true;
     
        cmd.Clear;
        cmd.Add('user smdr');
        cmd.Add('pass PCCSMDR');
        cmd.Add('');
        Mysocket.Socket.SendText(asterisk_cmd.text);

не ошибок не выводит и ни каких ответов нет

Автор: ^D^ima 06.06.16, 08:14
Цитата eda-76 @
cmd

Цитата eda-76 @
asterisk_cmd

Это разные переменные вообще-то.

Автор: eda-76 06.06.16, 08:23
не в этом проблема, не все подкорректировал для форума
проблема в том что не могу передать логин и пароль на АТС и получать лог

Автор: ^D^ima 06.06.16, 08:41
eda-76
Можно снять логи сниффером с putty и посмотреть что он передает.

Автор: eda-76 06.06.16, 09:00
просто не хочется изобретать велосипед, может кто то уже делал, что то подобное

интересно то что при коннекте сразу идет дисконнект, такое ощущение что надо уже при коннекте передавать логин и пароль, хотя putty нормально ждет

Автор: Gonarh 06.06.16, 09:07
1. Судя по номеру порта, это обычный телнет.
2. Ищем любой готовый компонент клиента Telnet
3. ....
4. Профит.

Добавлено
А в коде у тебя полная жопа. Ты пытаешься залогиниться сразу после открытия соединения. Так не делается. Такое возможно в событии OnConnect.

Автор: eda-76 06.06.16, 11:28
ну жопа не жопа, так как здесь вырезка из разных процедур и на результат это ни как не влияет, проблема в том, что именно надо посылать туда (какие команды)
сейчас у меня начало возвращать "Enter Password:" и я пытаюсь отловить это и вернуть пароль, но мне кажется, что должно как то командой передаваться.

Автор: eda-76 06.06.16, 13:17
получилось (правда через одно место), вдруг кому интересно будет
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     
    ....    
      Mysocket := TClientSocket.Create(nil);
      Mysocket.Address := '192.168.0.101';
      Mysocket.Port := 23;
      Mysocket.OnRead := ClientSocket1Read;
      Mysocket.OnError := ClientSocket1Error;
      Mysocket.OnConnect:= ClientSocket1Connect;
      Mysocket.Active := true;
    .....

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    procedure TDM.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    Var SocketStr:WideString;
    begin
      SocketStr := Socket.ReceiveText;
      Memo1.Lines.Add(SocketStr);
     
      if pos(#13+'-',String(SocketStr))>0 then Begin
        Mysocket.Socket.SendText('smdr'+#13);
      End;
      if pos(#13+'Enter Password:',String(SocketStr))>0 then Begin
        Mysocket.Socket.SendText('PCCSMDR'+#13);
      End;
    End;

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)