![]() |
![]() |
![]() |
|
Компонента 1С для работы с Сокетами и TCP/IP | ☑ | ||
---|---|---|---|---|
0
Air777
25.08.05
✎
20:02
|
Господа возникла необходимость заливать данные из внешнего сервера
в базу 1С. Сервер работает по экзотическому протоколу на базе TCP/IP (протокол наподобие POP3 открытый текстовый) Обыскался по всевозможным форумам и ресурам компоненту, которая бы могла создавать полноценного асинхронного клиента TCP/IP. Чтобы можно было отправлять сообщение и при получении каких либо данных с сервера также выполнялась некая процедура для обработки полученных данных. Всё что было найдено либо было глючевно, либо не давало полную свободу действий (произвольный порт, и без промежуточных протоколов с никами и прочей лабудой)с TCP/IP как это можно делать например в телнетовской утилите от М$. Помогите кто чем может. Заранее спасибо. |
|||
1
Волшебник
модератор
25.08.05
✎
20:45
|
Почему бы не использовать telnet? Ему можно подложить текстовый файл.
|
|||
2
Орк
25.08.05
✎
21:22
|
А winsock не катит?
|
|||
3
smaharbA
25.08.05
✎
21:42
|
use Socket;
//$forminfo = 'ПАРАМЕТРЫ_ДЛЯ_ФАЙЛА_С_КОТОРОГО_ЧТОТО_ПОЛУЧАЕМ'; #Это если надо $proto = getprotobyname('tcp'); socket(Socket_Handle, PF_INET, SOCK_STREAM, $proto); $port = ПОРТ_ХОСТА; $host = "АДРЕС_НОСТА"; $sin = sockaddr_in($port,inet_aton($host)); connect(Socket_Handle,$sin) || die ("Cannot connect"); send Socket_Handle,"GET ЗДЕСЬ_ПУТЬ_К_ФАЙЛУ$forminfo HTTP/1.0\n",0; # ПЕРЕДАЕМ ЗАГОЛОВОК ЕСЛИ НАДО send Socket_Handle,"User-Agent: my agent\n",0; send Socket_Handle,"SomeHeader: my header\n",0; send Socket_Handle,"\n",0; # читаем из дескриптора сокета также как из файла. while () { print $_; #печатаем или можно передать в переменную } close (Socket_Handle); |
|||
4
Air777
26.08.05
✎
09:19
|
То: Орк,smaharbA
Как соединиться из не 1С я в курсе. Меня интересует соединение именно из самой 1С, т.е. из внешней компоненты, если таковая имеется готовая, или пример как её создать (желательно на Delphi6) |
|||
5
GrayT
26.08.05
✎
09:27
|
Вроде видел на проклабе - сам не юзал.
Можно попробовать заюзать АктивХ от мелкомягких |
|||
6
SnarkHunter
26.08.05
✎
09:42
|
NetaInet.dll
|
|||
7
Air777
26.08.05
✎
09:43
|
То: GrayT
Какраз на проклабе и были найдены и протестированы все компоненты. Ниодна не дает желаемого. Какие именно ActveX хавает 1С? Может ссылки какие есть? |
|||
8
SnarkHunter
26.08.05
✎
09:43
|
||||
9
MMF
26.08.05
✎
10:00
|
(7) напиши сам... фигли там писать, когда есть Indy...
|
|||
10
Air777
26.08.05
✎
10:03
|
To SnarkHunter
Отличная компонента, меня бы полность устроила если бы она соединенеие не закрывала после получения ответа с сервера. Т.е. она синхронная запрос-ответ. И не предусматривает обработку получаемых данных с сервера без запроса. То MMF: Пожалуйто пример, или ссылку на ресурс как делать в Dlephi6 |
|||
11
MMF
26.08.05
✎
10:16
|
(10) сырцы не вышлю... заказчик не поймет. В объекте компоненты создаешь обработчики событий TClientSocket/TserverSocket (поскольку Д6) типа
procedure OnConnect (Sender: TObject; Socket: TCustomWinSocket); procedure OnSocketRead (Sender: TObject; Socket: TCustomWinSocket); procedure OnSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); создаешь сокеты и назначаешь свойства. FNetClient := TClientSocket.Create(nil); FNetClient.ClientType:=ctNonBlocking; FNetClient.Address:=FNetInfo.IP; FNetClient.Port:=FNetInfo.Port; FNetClient.OnDisconnect:=OnDisconnect; FNetClient.OnConnect:= OnConnect; FNetClient.OnRead:= OnSocketRead; ты сказал, что знаешь как работать с сокетами... работай :-) Никакой разницы с обычным использованием компонентов. |
|||
12
Air777
26.08.05
✎
10:20
|
То: MMF
У меня сложность все это упаковать во внешнюю компоненту так чтобы передавалось событие в 1С о получении сообщения например. Писал TCP/IP приложения но с dll и теб более заточенные под 1С компоненты не писал. |
|||
13
Темнота
26.08.05
✎
10:26
|
Могу выслать примеры из "Технологии создания внешних компонент"
А что мешает использовать 1С как OLE сервер? |
|||
14
Air777
26.08.05
✎
10:32
|
То: Темнота
Пожалуйсто пришли на air777@mail.ru Спасибо |
|||
15
Темнота
26.08.05
✎
10:46
|
вечером пошукаю на домашнем компе и вышлю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |