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

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

Что не так? [D7, Win2k]


Cosmic ©   (2003-01-14 10:58:00) 

Есть прога:

program server;

{$APPTYPE CONSOLE}
uses
SysUtils,
ScktComp, Windows, Messages;

type
TEvents=class
procedure Accept(Sender: TObject; Socket: TCustomWinSocket);
procedure Receive(Sender: TObject; Socket: TCustomWinSocket);
procedure Connect(Sender: TObject; Socket: TCustomWinSocket);
procedure disconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
end;

procedure TEvents.Accept(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln("client accept");
end;

procedure TEvents.Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText("hello");
writeln("client connect");
end;

procedure TEvents.Receive(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln("client Receive");
end;

procedure TEvents.disconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln("client disconect");
end;

procedure TEvents.error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
writeln("error");
end;

var
Server1 : TServerSocket;
Events:TEvents;
Mesg: TMsg;

begin
Server1.OnClientConnect := ClientConnect;

Events:=TEvents.Create;
Server1.OnClientConnect:=Events.Connect;
Server1.OnAccept:=Events.Accept;
Server1 := TServerSocket.Create( nil );
Server1.Port := 8000;
Server1.Active := True;

While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;

Server1.free;
Events.free;
end.


По идее, при коннекте должна вывеститсь строка "client accept". Но не выводится. Что не так?


Bachin   (2003-01-14 16:23:00) [1]

я вообще-то туго себе преставляю каким образом эта
Server1.OnClientConnect := ClientConnect;
строка компилится, а если вдруг происходит сие чудо, то кто такой Server1 и куда он указывает?

первое чем займись - попытайся разобраться с принципом функционирования procedure of object
дальше разберись с классами TClientSocket & TServerSocket
ну а дальше уже переходи на АПИ...

ты же налепил кучу огрызков непонятного назначения! как я могу объяснить "что не так" если ВСЕ НЕ ТАК!

PS если хочешь приблизиться к API - возьми библиотеку ICS...
PSS кстати, там и примеры есть...


Digitman   (2003-01-14 14:43:00) [2]

То что "не падает" - случайность)... "Упадет" обязательно

А зачем тебе конс.приложение ? Не вижу смысла. Чем обычное не устраивает ?


Cosmic   (2003-01-14 14:03:00) [3]

Не падает, но при коннекте ничего не делает. Лучше бы написал КАК это все сделать правильно.


Bachin   (2003-01-14 11:50:00) [4]

Потому что у тебя программа на первой строчке падает! (если вообще компилится! проверять не хочу)
и что это за бред?
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;


Наверх

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