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

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

Socket's


xZorg ©   (2006-06-27 09:20:00) 

Здравствуйте у меня вот в чем проблема.
Пишу DLL-ку, в которой есть процедура:
procedure T_ClientTCP.ConnectToServ(Address: string; Port: string);
begin
  ClientSocket1 := TClientSocket.Create(nil);
  ClientSocket1.Active := false;
  ClientSocket1.Host := address;
  ClientSocket1.Port := StrToInt(Port);
  ClientSocket1.ClientType := ctNonBlocking;
  ClientSocket1.Active := true;

  ShowMessage('Соединение установлено');
end;

Проблема вот в чем, если закоментарить это сообщение, то он просто напросто не отошлет ничего серверу.
Процедура которая отсылает сообщения:

procedure T_ClientTCP.SendMess(st: string);
begin
    ClientSocket1.Socket.SendText(st);
    ClientSocket1.Destroy;
end;
Помогите разобраться!


Сергей М.   (2006-06-27 15:38:00) [1]


> xZorg   (27.06.06 14:06) [9]
>
> Так не прокатит


"Прокатит", если сильно приспичит.


> это DLL, какой там APPLICATION .ProcessMessages?


А почему его там не должно быть ?


Пусик   (2006-06-27 15:12:00) [2]


> xZorg   (27.06.06 14:06) [9]
> Так не прокатит:while not  ClientSocket1.Connected do Application.
> ProcessMessages;я же говорю это DLL, какой там APPLICATION
> .ProcessMessages?


Значит любым другим способом ожидание делай.


xZorg   (2006-06-27 14:06:00) [3]

Так не прокатит:
while not  ClientSocket1.Connected do Application.ProcessMessages;
я же говорю это DLL, какой там APPLICATION .ProcessMessages?


Пусик   (2006-06-27 13:51:00) [4]

Только надо учесть, что ClientSocket1.Connected может не случиться никогда.


Пусик   (2006-06-27 13:50:00) [5]

ClientSocket1.Active := true;
while not  ClientSocket1.Connected do Application.ProcessMessages;
ClientSocket1.Socket.SendText(st);


xZorg   (2006-06-27 13:45:00) [6]

Так как мне без этого обойтись.
В этом на самом деле большая проблема состоит.
Ведь клиент у меня получается в DLL - шке, а сервер просто приложение, то с горем пополам получается сообщение передать.  А когда  обратно пытаюсь отослать (Из клиента-приложения на сервер - DLL), то вообще чума. Кто нибудь сталкивался с такой проблемой?


Belorus   (2006-06-27 13:13:00) [7]

ShowMessage('Соединение установлено'); - видимо он об этом сообщении.

Своеобразный стоп-кран в выполнении фукции.


Seeker   (2006-06-27 11:05:00) [8]


> мне интересно почему не работает если сообщение не выведу?
> !!!!

Интересно, а когда ты отсылаешь сообщение?


po4ti novi4ok   (2006-06-27 10:20:00) [9]

какое сообщение?


xZorg   (2006-06-27 10:16:00) [10]

это я потом отлажу. мне интересно почему не работает если сообщение не выведу?!!!!


Пусик   (2006-06-27 10:01:00) [11]


> ClientSocket1.Destroy;


Ты уверен, что не закроешь сокет до того, как все данные будут переданы?
TClientSocket/TServerSocket используют событийную модель.


Наверх

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