![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать активен ли TServerSocket. [D6, Win2k]
=alexlp= © (2004-12-10 23:02:00)Подскажите пожалуйста можно ли узнать активен ли TServerSocket, зная ip-адрес и порт. Т.е проверить по этому ip, существует ли на нём TServerSocket.
=alexlp= (2004-12-12 12:09:00) [1]спасибо
работает.
=alexlp= (2004-12-12 12:07:00) [2]спасибо
работает.
TButton (2004-12-12 03:55:00) [3]а что мешает присвоить результат выполнения функции HostToIP
свойству Host компонента TClienSocket
потом вызвать метод Open Того же компонента
в обработчике onConnect
написать ShowMessage('I've connected!.. somewhere...')
в обработчике onError
написать ShowMessage('Can't connect');
ну или что-нибудь на твой вкус.
З.Ы.
в onError еще следовало бы проверять тип ошибки, чтоб удостовериться, что это именно ошибка коннекта.
=alexlp= (2004-12-11 22:43:00) [4]Подскажите как реализовать.
uses
Winsock, addips;
function HostToIP(Name: string): string;
var
WSAData: TWSAData;
hostEnt: PHostEnt;
addr: PChar;
begin
Result:='';
WSAStartup($0101,WSAData);
try
hostEnt:=gethostbyname(PChar(Name));
if Assigned(hostEnt) then
if Assigned(hostEnt^.h_addr_list) then
begin
addr:=hostEnt^.h_addr_list^;
if Assigned(addr) then
Result:=Format('%d.%d.%d.%d',[byte(addr[0]),byte(addr[1]),byte(addr[2]),byte(addr[3])]);
end;
finally
WSACleanup
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
m: TServerList;
i,j: integer;
begin
m := TServerList.Create('', '', SV_TYPE_ALL);
for i := 0 to m.Count - 1 do
with List[i] do begin
Form1.ListBox2.Items.Add(HostToIp(svr_Name));
end;
это получение IP, а как зная эти IP и порт, по ним проверить существует ли на этом IP TserverSocket.
Digitman (2004-12-11 09:30:00) [5]
> =alexlp=
попытаться подключиться с нему, например, с пом. TClientSocket
если попытка завершилась успехом, то TServerSocket активен, в противном случае - нет.