![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 используют событийную модель.