![]() |
![]() |
![]() |
|
кто-нить использовал w3sockets в 1С 8? | ☑ | ||
---|---|---|---|---|
0
gr13
08.07.10
✎
11:19
|
собственно такой код
sSocketText = ""; oSocket = Новый COMОбъект("Socket.TCP"); oSocket.DoTelnetEmulation = True; oSocket.TelnetEmulation = "TTY"; oSocket.Host = ИмяКомпьютера + ":25"; oSocket.Open(); oSocket.WaitFor("Login:"); oSocket.SendLine(Логин); oSocket.WaitFor("Password:"); oSocket.SendLine(Пароль); sSocketText = oSocket.GetLine; oSocket.SendLine("quit"); oSocket.Close(); fCheckExchange = 0; я так понимаю что это аналог терминала, но почему- то на строке oSocket.Open(); вываливается сразуже ошибка, что подключение отклонено. в чем может быть проблема? |
|||
1
gr13
08.07.10
✎
11:41
|
фух open заработало надо было 23 порт указать
теперь другая проблема oSocket.SendLine("netstat"); sSocketText = oSocket.GetLine(); oSocket.SendLine("quit"); он почему-то не отрабатывает, т.е. ничего не возвращает( |
|||
2
gr13
08.07.10
✎
14:19
|
ап)
|
|||
3
Kreont
08.07.10
✎
14:26
|
(0) использовал но не в 1с, а когда диплом писал на native с под Windows/Unix :)
То все из одной обработки такое делаешь, через локалхост? Или между двумя компами тестируешь? Просто помнится немного реализация, так должен где то висеть процес "серверный" который слушает нужный порт и обрабатывает, как из 1с хз непробовал. |
|||
4
gr13
08.07.10
✎
14:29
|
(3) у меня задача нужно на удаленном компе запустить netstat и получить результат назад - файл не предлагать.
вот я сейчас пытаюсь это сделать из того, что я понял у меня нормально доходит до запуска telnet, а потом как в wscript необходимо передавать sendkeys, но у w3socket такого нет, вот я и думаю как мне обойти этот момент :( вот пример на wscript запуска телнета на удаленной машине oShell = Новый COMОбъект("WScript.Shell"); //Стартуем командную строку oShell.Run("C:\Windows\System32\Telnet -f c:\logtelnet1.txt"); Задержка(Задержка); // Пишем нужный адрес. oShell.AppActivate("C:\Windows\System32\Telnet"); oshell.sendkeys("chcp 1251"+("{Enter}")); oShell.SendKeys("open " + ИмяКомпьютера + " -l " + Логин + " " + Пароль); oShell.SendKeys("{Enter}"); Задержка(Задержка); // Здесь пишем нужную команду. Можно и с ключами. oShell.AppActivate("C:\Windows\System32\Telnet"); oShell.SendKeys("netstat"); oShell.AppActivate("C:\Windows\System32\Telnet"); oShell.SendKeys("{Enter}"); Задержка(Задержка*5); Сообщить("Выходим"); oshell.sendkeys("exit{Enter}"); oShell.SendKeys("{Enter}"); кроме последней строки все работает.) но мне не нравится решение поэтому ищу другие варианты. |
|||
5
gr13
08.07.10
✎
14:31
|
||||
6
gr13
08.07.10
✎
17:09
|
уря! добился - лучший метод)
oSocket = Новый COMОбъект("Socket.TCP"); oSocket.DoTelnetEmulation = True; oSocket.TelnetEmulation = "TTY"; oSocket.Host = ИмяКомпьютера + ":23"; oSocket.timeout = 50000; oSocket.Open(); // соединение oSocket.WaitFor("Login:"); oSocket.SendLine(Логин); oSocket.WaitFor("Password:"); oSocket.SendLine(Пароль); oSocket.WaitFor(">"); oSocket.Sendline("chcp 1251"); oSocket.WaitFor(">"); oSocket.Sendline("netstat"); oSocket.WaitFor(">"); Сообщить(oSocket.Buffer); oSocket.SendLine("quit"); oSocket.Close(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |