Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

Поиск в сети по диапазону адресов   Найти похожие ветки 

 
Kair ©   (2004-05-04 06:28) [0]

procedure Button1Click();
var
 i: Integer;
begin
ListBox1.Clear;
for i := x to y do
 begin
  ClientSocket1.Address := zzz + IntToStr(i);
  ClientSocket1.Open;
 end;
end;

procedure ClientSocket1Connect();
begin
Socket.Close;
end;

procedure ServerSocket1Connect();
begin
ListBox1.Items.Add(Socket.RemoteAddress);
end;

procedure ListBox1DoubleClick();
begin
ClientSocket2.Address := ListBox1.Items[zzz]; //это другой, второй, сокет
end;

Но вот если найдет кого-нибудь, то больше поиск проводить не удается,
Выводится сообщение, что: "Can"t change value while socket is active""
и показывает на строку после "ClientSocket1.Address := ".
Пробовал делать в обработчике Button1Click так: ClientSocket1.Close;
Но ошибка все-равно выходит...
Сделал проверку на активность: ShowMessage(BooleToStr(ClientSocket1.Active));
Сначала показывает "0", а после соединения "-1".


 
FireMan_Alexey ©   (2004-05-05 10:45) [1]

Дело в том, что ты используешь неблокирующий режим сокета! При этом после завершения процедуры Open никто не дает гарантии, что твой сокет уже законнектился к серверу(т.к. он находится в неблок. режиме)!
О коннекте к серверу извещает процедура OnConnect но в то время как твой сокет пытается коннектиться к серверу ты в цикле вызываешь еще один коннект и меняешь адрес, что нельзя делать ни в коем случае!
Я думаю, что тебе следует использовать таймер для твоего случая:

Procedure Timer;
Begin
 Client.Address:="127.0.0.1";
 Client.Port:=3128;
 Client.Open;
 Timer.Enabled:=False;
End;

Procedure OnError;
Begin
 Socket.Disconnect(Socket.SocketHandle);
 Error:=0;
 Timer.Enabled:=True;
End;

Procedure OnConnect;
Begin
 Socket.Disconnect(Socket.SocketHandle);
 Timer.Enabled:=True;
End;



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
1-1086740941
AleKo
2004-06-09 04:29
2004.06.27
Пронумеровать строки в TDBGridEh


14-1086860996
Юрий
2004-06-10 13:49
2004.06.27
Учебник по С++


1-1087293114
Aleksej
2004-06-15 13:51
2004.06.27
Исключения в FormActivate, Create и т. д.


1-1086753976
Litr
2004-06-09 08:06
2004.06.27
Chart


9-1078325301
Гарри Поттер
2004-03-03 17:48
2004.06.27
Несколько текстур на цилиндр OpenGL