Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 15:34   #1
foxes
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 94
По умолчанию Проблема с ClientSocket

Люди помогите, не работает цикл.
У меня в мемо 4 строчки соединяется только с последней адрес а все проскакивают

Код:
if not f then exit;
inc(i); 
if i=Memo1.Lines.Count-1 then Exit;//Если конец списка, то идём Выход
for i:=0 to Memo1.Lines.Count -1 do
    begin
    f:=false; //Останавливаем цикл
    ClientSocket1.Address:=Memo1.Lines[i];
    ClientSocket1.Port:= strtoint(sComboBox1.Text);
    ClientSocket1.Active:=true;
    Application.ProcessMessages;
   end;
  Timer2.Enabled:=False;  // Останавливаем таймер
end;
foxes вне форума Ответить с цитированием
Старый 19.03.2012, 20:08   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Нет никакой проблемы, точнее она в непонимании. Через один сокет нельзя соединиться одновременно с произвольным числом адресов. Один сокет - один адрес. Комментировать код не стану, т.к. не известны тонкости реализации. Но из оного видно, что ваш сокет последовательно в цикле соединяется и рвет соединение с каждой строчкой мемо, за исключением последней.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 20.03.2012, 15:55   #3
foxes
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 94
По умолчанию

Так что f: boolean; не останавливает цикл на строчки?
И как сделать подскажите?
foxes вне форума Ответить с цитированием
Старый 20.03.2012, 16:10   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а в честь чего f должна остановить цикл?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.03.2012, 20:23   #5
foxes
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 94
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а в честь чего f должна остановить цикл?
А не могли вы подсказать, как сделать?
foxes вне форума Ответить с цитированием
Старый 20.03.2012, 23:14   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Извиняюсь, а в чем задача?
Код мне например ни о чем не говорит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.03.2012, 13:40   #7
foxes
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 94
По умолчанию

Сканер Cs-16 серверов, берёт из мемо(адреса) проверяете работает или нет
И результат вы водим в мемо

Код:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
if ClientSocket1.Socket.Connected then
 sMemo1.Lines.Add(ClientSocket1.Address);
  ClientSocket1.Active:=False;
 f:=true; //Включаем цикл
end;

procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:= 0; // Игнорируем ошибки
  if not ClientSocket1.Socket.Connected then
  begin
    sMemo1.Lines.Add(ClientSocket1.Address);
    Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1; //Продвигаемся =)
    f:=true; //Включаем цикл
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if not f then exit;
inc(i);
if i=Memo1.Lines.Count-1 then Exit;//Если конец списка, то идём Выход
for i:=0 to Memo1.Lines.Count -1 do
    begin
    f:=false;//Останавливаем цикл
    ClientSocket1.Address:=Memo1.Lines.Strings[i];
    ClientSocket1.Port:=strtoint(sComboBox1.Text);
    ClientSocket1.Active:=true;
    Application.ProcessMessages;
   end;
  Timer2.Enabled:=False;// Останавливаем таймер
end;
foxes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ClientSocket rule-z Работа с сетью в Delphi 52 29.06.2011 08:27
ClientSocket AlexJan Компоненты Delphi 5 12.09.2010 08:08
Проблема с ClientSocket в консольном приложении prod87 Работа с сетью в Delphi 1 18.07.2010 14:48
ClientSocket misher Общие вопросы Delphi 2 09.07.2010 15:55
Проблема с ClientSocket Shouldercannon Работа с сетью в Delphi 1 23.03.2009 14:45