Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С помощью какой функции можно определить свои Ip

6.2K
09 января 2007 года
santey
28 / / 31.12.2005
Я сделал игрушку по сети и хотел бы отсылать Ip адрес своему партнеру.
Как программно или какой функцией можно определить Ip адреса своего компьютера?
Подскажите кто-нибудь.
1.9K
09 января 2007 года
InterWen
331 / / 16.09.2006
Цитата: santey
Я сделал игрушку по сети и хотел бы отсылать Ip адрес своему партнеру.
Как программно или какой функцией можно определить Ip адреса своего компьютера?
Подскажите кто-нибудь.





Увы! Компилятора под рукой нет, боюсь, как бы это не возвращало нечто вроде 127.0.0.1, но в принципе попытка - не пытка, лови (из статьи по winsock, вернее по стандартным Беркли сокетам, т.к. примеры идут под *никсы):


[FONT="Verdana"][COLOR="DimGray"]4.10 gethostname() -- Кто я?

Еще проще чем getpeername(). Она возвращает имя компьютера, на котором запущена твоя программа. Имя может применяться в gethostbyname(), которая будет рассмотрена ниже, для того, чтобы определить IP адрес твоей локальной машины.

Что может быть более интересным? Я могу придумать несколько вещей, но они не относятся к сокет программингу. В любом случае, вот ее объявление:

#include «unistd.h»
int gethostname(char *hostname, size_t size);

Аргументы: hostname - это указатель на массив из char, в который далее закинется информация о имени хоста в ходе работы этой функции. size - это длина в байтах этого массива.
[/COLOR][/FONT]


или, как вариант, при использовании "голеньких" сокетов твой партнер, если память не изменяет, принимая что-либо от тебя сможет выдрать из адресной структуры твой адрес, если он конечно выступает в роли сервера, хотя что-то тут не связывается.

294
10 января 2007 года
Plisteron
982 / / 29.08.2003
Цитата: santey
Я сделал игрушку по сети и хотел бы отсылать Ip адрес своему партнеру.
Как программно или какой функцией можно определить Ip адреса своего компьютера?
Подскажите кто-нибудь.



Порывшись в MSDN, нашёл функцию GetIpAddrTable.
[QUOTE=MSDN]The GetIpAddrTable function retrieves the interface–to–IP address mapping table.

 
Код:
DWORD GetIpAddrTable(
  PMIB_IPADDRTABLE pIpAddrTable,    // buffer for mapping table
  PULONG pdwSize,                   // size of buffer
  BOOL bOrder                       // sort the table
);


Parameters
pIpAddrTable
Pointer to a buffer that, on successful return, contains the interface–to–IP address mapping table as a MIB_IPADDRTABLE structure.
pdwSize
Specifies the size of the buffer pointed to by the pIpAddrTable parameter. If the buffer is not large enough to hold the returned mapping table, the function sets this parameter equal to the required buffer size.
bOrder
Specifies whether the returned mapping table should be sorted in ascending order by IP address. If this parameter is TRUE, the table is sorted.
Return Values
If the function succeeds, the return value is NO_ERROR.

If the function fails, use FormatMessage to obtain the message string for the returned error.[/QUOTE]
20K
10 января 2007 года
Emil777
13 / / 10.01.2007
Вот держи
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(1, 0);
int err = WSAStartup(wVersionRequested, &wsaData);
if(err == 0)
{
char hn[1024];
struct hostent *adr;
if(gethostname((char *)&hn, 1024))
{
int err = WSAGetLastError();
Beep();
};
adr = gethostbyname(hn);
if(adr)
{
char *LocalIp = new char[15];
sprintf(LocalIp,"%d.%d.%d.%d",
(unsigned char)adr->h_addr_list[0][0],
(unsigned char)adr->h_addr_list[0][1],
(unsigned char)adr->h_addr_list[0][2],
(unsigned char)adr->h_addr_list[0][3]);
Label1->Caption=LocalIp; //Выводим IP адрес
}
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог