|
|
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Собственно весь вопрос в теме - как определить ip машины, на которой запускается программа. Пробовал через gethostbyname, но работает медленно (видать все равно лезет к DNS и т.д.) и не всегда отрабатывает, в тоже время ipconfig адреса показывает быстро и работает всегда (даже если машина не в сети) - хотелось бы так же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:02 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:08 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Спасибо, конечно - но ведь написал, что gethostbyname уже пробовал на некотрых машинах она и возвращает NULL и вообще притормаживает. Вот кусок моего кода, может действительно ошибся, интересует меня только один ip адрес, поэтому перебор не нужен. struct sockaddr_in dest; struct hostent *h = NULL; dest.sin_family = AF_INET; dest.sin_addr.s_addr = inet_addr(str); try { if(dest.sin_addr.s_addr == INADDR_NONE) { h = gethostbyname(str); if(h != NULL) { memcpy(&(dest.sin_addr), h->h_addr_list[0],h->h_length); out = inet_ntoa(dest.sin_addr); } } else { h = gethostbyaddr((char *)&dest.sin_addr.S_un.S_addr,sizeof(dest.sin_addr.S_un.S_addr), AF_INET); if(h != NULL) out = h->h_name; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:20 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Из приведенного куска кода не ясно, что такое str (параметр gethostbyname). Думаю, что все негативные явления из-за него. Т.к. gethostbyname призван по доменному имени определять прочие параметры, то при наличии параметра он тянется до ближайшего DNS и не всегда там находит. При параметре NULL, он никуда не лезет, а дает локальные установки. интересует меня только один ip адрес А Вы точно знаете который? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:38 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Понятно, а str - это char[512], заполняется через GetComputerName. Насчет передачи NULL в gethostbyname - это работает (сразу не заметил), буду пробовать на проблемных машинах - спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:55 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
Cлучайный прохожий А что означает в Вашем коде: ... } // for } // if - что тут нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 17:22 |
|
||
|
Определение локального ip
|
|||
|---|---|---|---|
|
#18+
www.lepsik.com/src/ip.zip здесь для Borland Builder компонент он в исходниках - делает то что тебе надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32347475&tid=2035678]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 304ms |

| 0 / 0 |
