Имя: Пароль:
1C
 
кто-нить использовал 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();