Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TClient & Tserver sockets, не могу пропинговать сокеты 
:(
    Опции темы
coolikov
Дата 10.5.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



Здраствуйте у меня проблемка :
Пищу сетевую общалку.  нужно клиентом отправить текст (socket.sendtext) списку серверов(). 
(типа сообщить всем что он онлайн)

Пробую так :
  
Код

   for i:=1 to n do
     begin
      ClientSocket1.Active  := False;
      ClientSocket1.Host:=имя i-го  хоста;
      ClientSocket1.Active := True;
      ClientSocket1.Socket.SendText(msg);
     end;

но коннекта с хостом не происходит
пробовал ставить задержку между :

      ClientSocket1.Active := True;
и
     ClientSocket1.Active  := False;

но скоко не ставил(по врем. даже бесконечный цикл) конект так и не происходит почему smile 

мож че не так делаю????????
мож есть другой способ????
мож можно просто как-то пропинговать запущены ли на удаленных компах ТServerSocket"ы??????

помогите плизз!!!!! smile 

______________________________
в программе есть и клиент и сервер.
(т.е общего сервера для всех нет)
 
PM MAIL   Вверх
Демо
Дата 10.5.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Для твоего случая:

Код

  ClientSocket1.Open;
  while not ClientSocket1.Active do Application.ProcessMessages;
  ClientSocket1.SendText(...);
 


--------------------
    
PM MAIL ICQ Skype   Вверх
Matematik
Дата 10.5.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Ты работаешь с неблокирующим сокетом.

http://www.delphimaster.ru/articles/sockets/index.html
http://www.delphimaster.ru/articles/socksrv/index.html 
PM MAIL WWW ICQ   Вверх
coolikov
Дата 10.5.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



to Демо
а если сокета нет то программа просто стопиться и все!!!!
А мне надо узнать есть ли он smile  
PM MAIL   Вверх
Romikgy
Дата 10.5.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Имхо создавай сокеты динамически,  таких траблов не будет 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Демо
Дата 10.5.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(coolikov @  10.5.2006,  10:53 Найти цитируемый пост)
а если сокета нет то программа просто стопиться и все!!!!


Ну так тогда делай правильно. Используй обработку событий OnConnect и OnError. 


--------------------
    
PM MAIL ICQ Skype   Вверх
coolikov
Дата 10.5.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



to Romikgy
Ты имееш ввиду что можно сервер сделать статич
а при каждой посылке заново дин создавать сокет(клиентский) и приконекчивать к нужному серверу потом его дестроить smile 
А какие преимушества smile  
Обьясни плизз

Добавлено @ 11:46 
to Демо
да при попытке коннекта к несущ сокету у меня возникает OnError но как от него перейти к сканированию следующего компа т.е. к коду в процедуре : 
Код

 ClientSocket1.Host:=имя i-го  хоста;
 ClientSocket1.Open;    
  while not ClientSocket1.Active do Application.ProcessMessages;    
  ClientSocket1.SendText(...);

 smile 
З.Ы.
Понимаю что вопросы дурацкие, но ведь без вашей помоши не разобраться smile  
PM MAIL   Вверх
Romikgy
Дата 10.5.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(coolikov @  10.5.2006,  10:31 Найти цитируемый пост)
А какие преимушества

Все настройки создаются заново + ждать не нужно сокет одуплится, 
будет что т наподобии хттп соединения, 
создался, соединился , передал сообщение, отключился, разрушился 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
coolikov
Дата 4.7.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



Вот наконец то снова добрался до своей программки (лучше поздно чем никогда) smile 

to Romikgy
Плиззз обьяни или приведи пример(хоть схематический) как при динамическом криэйте сокета сразу понять запушен ли на хосте, к которому он пытаеться коннектиться, сервер?

 smile  
PM MAIL   Вверх
_hunter
Дата 4.7.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



сразу -- никак. делается это попыткой подключиться: получилось -- значит запущен, не получилось -- значит нет. 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
coolikov
Дата 4.7.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



но тогда не вижу смысла в динамическом создании сокетов smile 

ныне  думаю что отсылать сообщение типа "онлайн" (как я писал в начале топиеа смысла нет)
мне нужно просто попытаться приконнектиться  клиентом программы к списку серверов 
и тот серв, к которому можно приконектиться, пометить как онлайн
а тот,к которому не выйдет, как оффлайн.
проверка эта(пингование списка серверов) должна происходить постоянно в фоновом режиме
(смысл в том что бы показать пользователю кто в онлайн а кто нет)


вообщем счас есть такая проблема :

есть код:
Код

procedure pingall;
For i:=pc1 to pcN //(перебор всех компов) 
 while ((not form1.ClientSocket2.Active) and (form1.pinging=true)) do
     begin
       Application.ProcessMessages;
     end;
some code
end;


А ВОТ КОД ОБРАБОТЧИКА СОБЫТИЯ ОШИБКИ:

Код

procedure TForm1.ClientSocket2Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
     pinging:=false;
ErrorCode:=0;
end;


смысл задумки таков ---  коннектимся к соккету пока не приконнектимся или не произойдет ошибка в это время обрабатывая сообщения сиситемы

потом отвел эту процедуру pingall в отдельную нить(использовал класс Tthread)
но убрать       
   
Код

Application.ProcessMessages;


не могу 
тогда процесс висне и к следующему компу не переходит!!!! странно процесс та отдельный зачем ему 
Application.ProcessMessages  smile 

и следующий вопрос вооще не пойму но в таком виде (с Application.ProcessMessages и нитью ) сканирование проходит ток один раз
а в послендующий зацикливаеться на 

Код

while ((not form1.ClientSocket2.Active) and (form1.pinging=true)) do
     begin
       Application.ProcessMessages;
     end;


!!!!
З.Ы,
я уже в шоке, но всетаки надеюсь что с ВАШЕЙ помощью все получиться smile   

Это сообщение отредактировал(а) coolikov - 4.7.2006, 16:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.