Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 определение IP адреса  [new]
Kassa
Member

Откуда:
Сообщений: 82
кто - нить знает, как средствами FOXa определить IP адрес машины?
22 июл 03, 12:39    [270735]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
NNN
Member

Откуда:
Сообщений: 2141
Локальной? Можно с помощью mswinsockl.ocx
x=CREATEOBJECT('mswinsock.winsock')

?x.LocalIP


PS с сетевыми путями помощь еще нужна?
22 июл 03, 12:49    [270769]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Kassa
Member

Откуда:
Сообщений: 82
пасиба NNN! с winsock все получилось)
PS с сетевыми путями помощь еще нужна?

Конечно нужна!
22 июл 03, 14:06    [270940]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Flex2
Member

Откуда:
Сообщений: 172
Если тебе нужен адрес своей машины , то смело можешь использовать 127.0.0.1 и ничего тебе определять не нужно. А если работаешь с другой машиной то возьми то что приползло тебе на ящик с именем netlib.fll
В ней всего 2 функции которые возвращает тебе имя хоста по адресу и адрес хоста по имени. Используешь эту функцию так:

&& Для примера

Set Library to NETLIB additive

LOCAL lcIP, lcHOST
lcIP = "192.168.0.2"
lcHOST = "localhost"

? nametoaddr(lcHOST)
? addrtoname(lcIP)

Все.

Если такой адрес в простарнстве доступных адресов или имя PC в простарнстве имен то тебе вернется соответвенно либо IP либо имя хоста заданного его IP. Если не сможет вернуть (по различным причинам, я ошибки не обрабатывал), то вернет просто empty(nametoaddr(lcHOST)) = .T.
Если вернет пустую строку то соответвенно сможешь посмотреть ошибку
задекларировав функцию WSAGetLastError(), она тебе вернет код ошибки.

А на счет путей, диск нужно мапить , либо ручками либо с помощью NetAPI.
Не факт что у тебя путь к папке не окажется больше 255 байт.

Все.
22 июл 03, 17:33    [271365]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Kassa
Member

Откуда:
Сообщений: 82
пасиба Flex!
все классно работает с библиотекой! вроде пока не глючит

скажи плиззз, может в этой библиотечке есть еще какие-нить полезные функции.
и еще вопрос, в этой библиотеке определение ip и hostа происходит через вызов 'mswinsock.winsock', просто интересно?
23 июл 03, 10:12    [271897]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Flex2
Member

Откуда:
Сообщений: 172
Нет, я не стронник использования ОLE серверов автоматизации,
там все сделано ручками с использованием функций WinSock.
Полезные функции есть, это по сути кусок из библитеки по сетевому обмену.
Есть полный клиенти есть сервер. Реализация такова что при возникновении какого либо сетевого события ну к примеру запрос на соедиенение клиента у тебя в фоксовской форме (если она сервер) дергается метод OnAccept.
При приходе строки через интерфейс сокетов у тя дергается OnRecive , а то что пришло ложится в глобальную переменную. Тоесть, чтобы юзать ее нужно заполнить простое правило. Сработало тобой определнное событие - смотри что лежит в буфере. Соответсвенно при создании приложения тебе в форме просто нужно добавить эти методы, которые по сути становятся индикаторами сетевых событий.
Можно конечно ложить значения которыми обмениваются клиент и сервер в свойсво формы, но почему-то это на С++ не отрабатывается, пришлось только
через буфер. Причем, сервер асинхронный, для каждого клиента все собития обрабатываются в отдельном потоке. что не тормозит работу приложения.
Если очень нужно , пиши. Я как раз счас им занимаюсь и глюки режу.

Да и еще, чем хорошо использование библиотек, не нужно за собой таскать все время ОСХ и котролировать, есть они на машине пользователя или нет.
И тебе советую.
23 июл 03, 13:26    [272373]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Kassa
Member

Откуда:
Сообщений: 82
интерсная штукенция, я имею в виду индикаторы сетевых событий!
а насчет OCX или использования библиотек ты тысячу раз прав... сколько уже таких граблей было, когда у клиента на машине не хватает OCX
23 июл 03, 13:58    [272454]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Мимо проходил
Guest
Flex2
А если работаешь с другой машиной то возьми то что приползло тебе на ящик с именем netlib.fll
В ней всего 2 функции которые возвращает тебе имя хоста по адресу и адрес хоста по имени.


а можно и на этот адресок - NArtUfa сабака Yandex точка RU кинуть подобную штуку, плиз.
28 июн 04, 14:23    [769017]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Мимо проходил
Guest
Flex2
А если работаешь с другой машиной то возьми то что приползло тебе на ящик с именем netlib.fll
В ней всего 2 функции которые возвращает тебе имя хоста по адресу и адрес хоста по имени.


а можно и на этот адресок - NArtUfa сабака Yandex точка RU кинуть подобную штуку, плиз.
28 июн 04, 14:34    [769060]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Flex2
Member

Откуда:
Сообщений: 172
По просьбам трудящихся:

#define ERR_WSAStartup    '0' && Ошибка инсталляции WinSock 2.0
#define ERR_CannotResolve '1' && Невозможносто разрешить имя (нет такого имени/адреса)

SET LIBRARY TO Netlib.fll additive
LOCAL lcInIP, lcInHost,lcOutIP, lcOutHost as String

* Определения имени удаленного сервера по адресу
lcInIP = "213.180.216.200"
lcOutHost = _GetIPToHost(@lcInIP)
DO case
CASE lcOutHost = ERR_WSAStartup
? "Ошибка инсталляции WinSock 2.0"
CASE lcOutHost = ERR_CannotResolve
? "Нет такого адреса"
ENDCASE
?  "Имя сервера: "+lcOutHost

* Определения адреса удаленного сервера по имени
lcInHost= "www.yandex.ru"
lcOutIP =_GetHostToIP(@lcInHost)
 
 DO case
CASE lcOutIP = ERR_WSAStartup
? "Ошибка инсталляции WinSock 2.0"
CASE lcOutIP = ERR_CannotResolve
? "Нет такого имени"
ENDCASE
?  "Адрес сервера: "+lcOutIP

* Для локальных  имен: имя  сервера  это имя компьютера
* Например посмотрим свой адрес: 
*!*	lcInHost= "localhost"
*!*	lcOutIP =_GetHostToIP(@lcInHost)

Не пробовал под Win95-98, хотя по идее и там должно работать.
Сама библиотека пристыкована к сообщению, пользуйтесь.
1 июл 04, 15:58    [778006]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Flex2
Member

Откуда:
Сообщений: 172
Тут

К сообщению приложен файл (Netlib.zip - 3Kb) cкачать
1 июл 04, 15:59    [778020]     Ответить | Цитировать Сообщить модератору
 Re: определение IP адреса  [new]
Telum
Member

Откуда: Краснодар
Сообщений: 127
Flex2 хотелось бы побольше узнать о возможностях WinSocket где это
можно сделать, и вообще, как его заставить работать?
У меня не получается передать сообщение по сети, ничего не происходит.
**********************************************************
12 июл 04, 19:32    [801299]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить