Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с gethostbyname Найти похожие ветки
← →
Separator © (2010-01-28 09:53) [0]Win7, D2101
Использую модуль JwaWinsock2
Нужно получить ip по названию.
Вот объявление:function gethostbyname(name: PChar): PHostEnt
PChar в 2010 это PWideChar
Так вот, никак не мог понять почему функция не хочет работать, не возвращает ipшники по названию. Решил проблему с приведением тип WideString к AnsString и тогда всё заработало.
Вопрос так и должно быть?
Код моей функции:
procedure GetIPs(const aList: TStrings; const aHostName: string = "");
type
PPInAddr = ^TPInAddr;
TPInAddr = array [0..250] of PInAddr;
var
mHost: PHostEnt;
mHostName: AnsiString;
mAdress: PPInAddr;
mWSAData: TWSADATA;
i: Integer;
begin
if aList <> nil then
begin
WSAStartup(C_WSA_VERSION, mWSAData);
{$WARNINGS OFF}
if Length(aHostName) > 0 then
begin
mHostName := aHostName;
mHost:= GetHostByName(PChar(mHostName));
end
else
begin
SetLength(mHostName, 128);
GetHostName(PChar(mHostName), Length(mHostName));
mHost:= GetHostByName(PChar(mHostName));
SetLength(mHostName, 0);
end;
{$WARNINGS ON}
if mHost <> nil then
begin
mAdress := PPInAddr(mHost^.h_addr_list);
i := 0;
while mAdress[i] <> nil do
begin
aList.Add(N2IP(mAdress[i]^));
Inc(i);
end
end;
WSACleanup;
end;
end;
← →
Rouse_ © (2010-01-28 20:48) [1]
> Так вот, никак не мог понять почему функция не хочет работать,
> не возвращает ipшники по названию. Решил проблему с приведением
> тип WideString к AnsString и тогда всё заработало.
> Вопрос так и должно быть?
Ну если функция требует на вход анси, а ты ей юникод пихаешь, сам подумай, что она должна сделать?
← →
Anatoly Podgoretsky © (2010-01-28 21:43) [2]> Rouse_ (28.01.2010 20:48:01) [1]
Хуже будет, когда переменная объявлена как Wide/AnsiString, а на самом деле в ней Ansi/WideString, тут приведение не спасет, поскольку это не приведение, а преобразование
← →
Separator © (2010-01-29 08:41) [3]Во из msdn:
struct hostent* FAR gethostbyname(
__in const char *name
);
Тут входящий параметр объявлен как char, в Delphi он будет аналогом AnsiChar или WideChar?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.075 c