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

Вниз

Socket s   Найти похожие ветки 

 
xZorg   (2006-06-27 09:20) [0]

Здравствуйте у меня вот в чем проблема.
Пишу 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 10:01) [1]


> ClientSocket1.Destroy;


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


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

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


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

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


 
Seeker ©   (2006-06-27 11:05) [4]


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

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


 
Belorus ©   (2006-06-27 13:13) [5]

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

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


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

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


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

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


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

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


 
xZorg   (2006-06-27 14:06) [9]

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


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


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


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


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


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


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


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


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



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

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

Наверх




Память: 0.49 MB
Время: 0.038 c
15-1150280183
начинающий
2006-06-14 14:16
2006.07.16
Clipboard via COM


15-1150688558
Kerk
2006-06-19 07:42
2006.07.16
Что такое FireBird


2-1151260729
Noname27
2006-06-25 22:38
2006.07.16
SetDCBrushColor


1-1148703455
tio
2006-05-27 08:17
2006.07.16
MDI правильное закрытие окон и исчезновением их


2-1151605595
resuS
2006-06-29 22:26
2006.07.16
Что такое StdIn?