![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TServerSocket в консольном приложении (типа, без форм) [D5, D7, Win95/98, WinXP]
maxistent © (2004-09-20 17:28:00)Уважаемые Мастера и все кто здесь! Не погёте ли мне с вопросом: надо написать консольное приложение с использованием TServerSocket (коннектить, читать клиентов, писать им). Надо бы мне прогу без форм, но с TServerSocket. Как это замудрить? Можь у кого код (или его часть) есть, а?
VMcL (2004-09-21 17:34:00) [61]>> maxistent © (21.09.04 17:05) [5]
Вроде, как-то так:
program Test;
uses
Windows, ...;
type
TWorkClass = class(TObject)
private
FFlag: Boolean;
FServer: TServerSocket;
procedure ServerConnect(Sender: TObject);
// ...
public
constructor Create;
destructor Destroy; override;
// ...
property Flag: Boolean read FFlag;
end;
constructor TWorkClass.Create;
begin
inherited Create;
FServer := TServerSocket.Create(nil);
FServer.OnConnect := ServerConnect; // не помню, может event по-другому называется
end;
// ...
// Где-то тут происходит установка флага Flag в True
destructor TWorkClass.Destroy;
begin
FServer.Free;
inherited Destroy;
end;
begin
with TWorkClass.Create do
while not Flag do
Sleep(1);
end.
maxistent (2004-09-21 17:05:00) [62]
> Server.OnConnect := ...
А дальше-то что?.. Может кусочек сорца есть, а? Буду рад...
VMcL (2004-09-20 19:39:00) [63]>> maxistent © (20.09.04 19:25) [3]
Server.OnConnect := ...
P.S. Учи матчасть. Без неё ой как тяжко.
maxistent (2004-09-20 19:25:00) [64]
> Server := TServerSocker.Create(Nil);
Да, сложность не в этом. Сложность в том, что я не знаю, как узнавать о его коннекте/дисконнекте с клиентами, принимать, обрабатывать и отправлять сообщения :) ВОТ В ЧЁМ СЛОЖНОСТЬ!
VMcL (2004-09-20 19:10:00) [65]>> Defunct © (20.09.04 18:15) [1]
Сложность в том, что если сокет в не блокирующем режиме, то нужно самостоятельно организовать цикл выборки сообщений.
Defunct (2004-09-20 18:15:00) [66]а в чем сложность?
Server := TServerSocker.Create(Nil);