Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему нет конекта ? [D7, XP]


KyRo ©   (2006-11-16 15:12:00) 

Подскажите почему я не могу подканектится .

Вот код

// Cоздаем клиент
    ClientIMg:=TClientSocket.Create(nil);
    ClientIMG.OnWrite:=ClientWrite;
    ClientIMG.OnError:=ClientError;
    ClientImg.OnConnect:=ClientConnect;
    Clientimg.ClientType:=ctNonBlocking;
    DelSpacesUn(ipclientIMG);
    Clientimg.Address:=ipclientIMG;
    Clientimg.Port:=50017;
   try
    Clientimg.Active:=True;
   Except
    ADOQUERY.Free;
    DBCONNECT.Free;
    Clientimg.Free;
    Result:=False;
    Exit;
   end;


Создаю  его  в нити  
Обработчик коннекта

procedure TImgLoadThread.ClientConnect(Sender: TObject;  Socket: TCustomWinSocket);
  begin
    if Clientimg.Socket.Connected
       then
         begin
          try
           Clientimg.Socket.SendText('LoadIm:'+IntToStr(LoadFile.Count-1)+':'+IntToStr(50020+StrToInt(Nomer)));
          Finally
           ClientImg.Socket.Close;
          end;
         end;
  end;


А вот так я объявляю этот обработчик


TImgLoadThread = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
   procedure ClientError(Sender: TObject; Socket: TCustomWinSocket ;ErrorEvent: TErrorEvent;
   var ErrorCode: Integer);
   procedure ClientWrite(Sender: TObject; Socket: TCustomWinSocket);
   procedure ServerClientError(Sender: TObject;Socket: TCustomWinSocket;
   ErrorEvent: TErrorEvent; var ErrorCode: Integer);
   procedure ServerClientRead(Sender: TObject;  Socket: TCustomWinSocket);
   procedure TimerServerWorkOnTimer(Sender: TObject);
   procedure ClientConnect(Sender: TObject;  Socket: TCustomWinSocket);
 public
    constructor Create(CreateSuspennded: Boolean; const NomHread:string);
 end;


Подскажите почему не происходит конект. и я не могу послать текст на сервер ?


Сергей М.   (2006-11-17 10:10:00) [1]


> medved_68 ©   (17.11.06 10:08) [4]
>
>


> Оно при коннекте увеличивается на 1?


С какого перепугу оно увеличится ?
Цикла-то нет ...
При stNonBlocking на обработке оконных событий завязано абсолютно все, в т.ч. и состояние списка ActiveConnections


medved_68   (2006-11-17 10:08:00) [2]


> И есть второй клиент который я создаю в нити(Код выше).
> И вот  
> когда я делаю
> Clientimg.Active:=True;
>
> То событие ClientImg.OnConnect:=ClientConnect; не происходит
> .

А что говорит по этому поводу сервер??? Точнее свойство Socket.ActiveConnections??? Оно при коннекте увеличивается на 1???


Сергей М.   (2006-11-17 08:26:00) [3]


> Из за чего такое может случится ???


Из-за отсутствия цикла ожидания/выборки/диспетчеризации оконных сообщений.


KyRo   (2006-11-16 15:29:00) [4]

В том то и дело что больше ничего нет.
Есть программа сервер который запущен 100 % на этом адресе и
порте 50017.

Есть два клиента один который лежит на форме и он работает если через него слать команды.Он конектится на этот же порт этого ай пи.

И есть второй клиент который я создаю в нити(Код выше). И вот  
когда я делаю
Clientimg.Active:=True;

То событие ClientImg.OnConnect:=ClientConnect; не происходит .
А если поставить BreakPoint на строке что идет после
Clientimg.Active:=True; то я вижу что он не стал True а остался в False.

Из за чего такое может случится ???


Сергей М.   (2006-11-16 15:14:00) [5]


> Создаю  его  в нити


Из приведенного кода это вовсе не очевидно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо