| Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум на Исходниках.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 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; |