![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
connect function
clim © (2003-07-23 00:20:00)у меня такой вопрос:
значит когда я устонавливаю соединение с каким-либо хостом на определенный порт,
то если таковой порт закрыт - очень долго генерирутся ошибка, что порт закрыт,
я написал такой код
...
A.sin_family:=AF_INET;
A.sin_addr.S_addr:=inet_addr(pchar(ip));
A.sin_port:=htons(port_number);
S:=socket(AF_INET,SOCK_STREAM,0);
port := false;
starttime:=GetCurrentTime();
while (GetCurrentTime() - starttime < wait_for_response) do
begin
if connect(S,A,sizeof(A))=0 then
port := true;
end;
if port=true then
Memo1.Lines.add(inttostr(port_number)+" -> open")
else
( inttostr(port_number)у меня такой вопрос:
значит когда я устонавливаю соединение с каким-либо хостом на определенный порт,
то если таковой порт закрыт - очень долго генерирутся ошибка, что порт закрыт,
я написал такой код
...
A.sin_family:=AF_INET;
A.sin_addr.S_addr:=inet_addr(pchar(ip));
A.sin_port:=htons(port_number);
S:=socket(AF_INET,SOCK_STREAM,0);
port := false;
starttime:=GetCurrentTime();
while (GetCurrentTime() - starttime < wait_for_response) do
begin
if connect(S,A,sizeof(A))=0 then
port := true;
end;
if port=true then
Memo1.Lines.add(inttostr(port_number)+" -> open")
else
Memo1.Lines.add(inttostr(port_number)+" -> close");
...
но ошибка все равно долго обрабатывается
Что делать???
Е-моё имя (2003-07-23 15:45:00) [21]
clim (23.07.03 15:43)
почитай про установление TCP соединения и сразу все поймешь
clim (2003-07-23 15:43:00) [22]
хотя нет -- я ошибся, чтобы определить состояние одного порта этому кусочку кода треюуется 50 секунд.
к стати очень хорошо заметно, что интенсивность хождения пакетов во
время этого кода очень низкая.
если сравнивать со скоростью, с которой сканируют порты, такие программки как nmap, portscanner, то скорость очень низкая =(
от сервака ничего не завист!!!
Digitman (2003-07-23 15:16:00) [23]
> clim
что значит "нужно" ? мало ли чего тебе нужно ! сервер может быть на другом конце света, сервер может быть нагружен до предела - мало ли причин, по которым реакция на твой запрос не мгновенна ?
обратись к серверу на твоей же (локальной) машине - будет тебе реакция в доли секунды !
clim (2003-07-23 14:59:00) [24]
примерно 5-7 секунд
нужно чтобы около 1, максимум 2
Digitman (2003-07-23 08:35:00) [25]
> долго обрабатывается
"долго" это сколько ? и сколько, по твоему, д.б. "недолго" ?