Имя: Пароль:
1C
 
Как организовать прослушивание TCP-порта (tcp-server в 1С)?
0 Moriarti
 
27.05.10
16:28
Возникла задача получения событий из линуксовой телефонной станции в 1С 8.1. Линуксоиды сказали, что без проблему смогут организовать отправку tcp-пакетов.

Как бы в 1С организовать прослушивание определенного tcp-порта и обработку входящего пакета?
1 Jstunner
 
27.05.10
16:31
я ВК написал для этого
2 sezhik
 
02.06.10
18:02
(1) а что ВК умеет? Только слушать или передавать тоже?
3 sezhik
 
02.06.10
18:04
(0) я использовал компоненту gnslisten.dll правда есть в ней опеделенного рода глюки.
4 Ковычки
 
02.06.10
18:26
все украдено до Вас
5 sezhik
 
02.06.10
18:36
(4) к чему?
6 Ковычки
 
02.06.10
19:46
(4) к ответу
7 Dzenn
 
гуру
02.06.10
19:54
(27) предполагаю, что нужна внешняя компонента. Но вот какая - хз. Возможно, она даже есть в списке ActiveX компонент, хотя вряд ли.
8 Dzenn
 
гуру
02.06.10
19:55
(7) к (0)
9 Ковычки
 
02.06.10
19:55
(7) она есть в списке оцх от мс
10 Ковычки
 
02.06.10
19:57
хотя по сабжу - линуксоидов за я... вешать и повыше
есть общепринятое логирование и для лин и для вин
11 sezhik
 
02.06.10
20:25
Вопрос к    Jstunner ВК можете поделится? Если она конечно умеет send and recieve?
12 Moriarti
 
07.06.10
16:58
Вроде бы получилось при помощи ocx контрола MS WinSock.
Работающий пример взял с http://www.rapidshare.ru/1511141, вкратце:

1) Устанавливается MSWINSCK.ocx
2) Лицензируется
3) Reboot
4) Кидаем на форму Microsoft Winsock Control

Ну и всё!

Port = 7788;
WinSock = ЭлементыФормы.WinSock;
WinSock.LocalPort = Port;
WinSock.Bind(Port, "127.0.0.1");
WinSock.listen();
Сообщить("Установлено прослушивание порта "+Строка(Port));

И события на компоненте:

Процедура WinSockDataArrival(Элемент, bytesTotal)
   WinSock = ЭлементыФормы.WinSock;
   Текст = "";
   WinSock.GetData(Текст);
   Сообщить("Получена строка:" +Текст);
   Winsock.SendData("Привет от сервера :)");
КонецПроцедуры

Процедура WinSockConnectionRequest(Элемент, requestID)
   WinSock = ЭлементыФормы.WinSock;
   Сообщить("Приконнектился "+WinSock.RemoteHostIP);
   Если WinSock.State <> 0 Тогда
       WinSock.Close()
   КонецЕсли;
   WinSock.Accept(requestID);
КонецПроцедуры

Отлично работает!!!!
13 Ковычки
 
08.06.10
20:46
а линуксоидов из (0) всеже подвешай за яй...
14 Moriarti
 
09.06.10
06:56
(13) Зачем?
У них свои задачи, у меня свои, все довольны :-)