Hello Alexey,
Your code has avery common flaw: there is no message pump allowing events to
be processed. Look at one of the console demo to see how to build a console
mode program with a message pump.
btw: Do not use OnStateChange event for anything else than displaying
informations. Use the other events such as OnSessionConnected and similar.
--
[email protected]
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be
----- Original Message -----
From: "Alexey Voytsehovich" <[email protected]>
To: <[email protected]>
Sent: Wednesday, November 11, 2009 1:51 PM
Subject: [twsocket] don`t connect simply client to simply server
Hi. Help please. This code
--server--
program serverdelphi;
{$APPTYPE CONSOLE}
uses
sysutils,
dateutils,
OverbyteIcsWSockBuf,
OverbyteIcsWSocket,
OverbyteIcsWSocketS;
type
{ TWorkClass }
TWorkClass = class
public
procedure StateChange(Sender: TObject; OldState, NewState :
TSocketState);
procedure SslWSocketServer1ClientConnect(Sender: TObject;
Client: TWSocketClient; Error: Word);
procedure SessionConnect(Sender: TObject; ErrCode: Word);
end;
var
socket: TWSocketServer;
WorkClass: TWorkClass;
dt: tdatetime;
{ TWorkClass }
procedure TWorkClass.StateChange(Sender: TObject; OldState,
NewState: TSocketState);
begin
write(' From ' );
case OldState of
wsInvalidState: write('wsInvalidState');
wsOpened: write('wsOpened');
wsBound: write('wsBound');
wsConnecting: write('wsConnecting');
wsSocksConnected: write('wsSocksConnected');
wsConnected: write('wsConnected');
wsAccepting: write('wsAccepting');
wsListening: write('wsListening');
wsClosed: write('wsClosed');
end;
write (' To ');
case NewState of
wsInvalidState: write('wsInvalidState');
wsOpened: write('wsOpened');
wsBound: write('wsBound');
wsConnecting: write('wsConnecting');
wsSocksConnected: write('wsSocksConnected');
wsConnected: begin
write('wsConnected');
try
socket.SendLine('test');
except
on E:Exception do
writeln('Connect E.Message=' + E.Message);
end;
end;
wsAccepting: write('wsAccepting');
wsListening: write('wsListening');
wsClosed: write('wsClosed');
end;
writeln;
end;
procedure TWorkClass.SessionConnect(Sender: TObject; ErrCode: Word);
begin
Writeln('session connect');
end;
procedure TWorkClass.SslWSocketServer1ClientConnect(Sender: TObject;
Client: TWSocketClient; Error: Word);
begin
writeln('connect');
end;
begin
WorkClass := TWorkClass.Create;
socket := TWSocketServer.Create(nil);
socket.OnClientConnect := WorkClass.SslWSocketServer1ClientConnect;
socket.OnSessionConnected := WorkClass.SessionConnect;
socket.OnChangeState := WorkClass.StateChange;
socket.Port:= '27777';
socket.Addr:= '127.0.0.1';
socket.Listen;
dt := Now;
repeat
sleep(1000);
until MinutesBetween(Now, dt) > 1;
WorkClass.Free;
socket.free;
end.
--client--
program clientdelphi;
{$APPTYPE CONSOLE}
uses
sysutils,
dateutils,
OverbyteIcsWSockBuf,
OverbyteIcsWSocket,
OverbyteIcsWSocketS;
type
{ TWorkClass }
TWorkClass = class
public
procedure StateChange(Sender: TObject; OldState, NewState :
TSocketState);
procedure CliSocketSessionConnected(Sender: TObject; ErrCode: Word);
end;
var
socket: TWSocket;
WorkClass: TWorkClass;
dt: tdatetime;
{ TWorkClass }
procedure TWorkClass.StateChange(Sender: TObject; OldState,
NewState: TSocketState);
begin
write(' From ' );
case OldState of
wsInvalidState: write('wsInvalidState');
wsOpened: write('wsOpened');
wsBound: write('wsBound');
wsConnecting: write('wsConnecting');
wsSocksConnected: write('wsSocksConnected');
wsConnected: write('wsConnected');
wsAccepting: write('wsAccepting');
wsListening: write('wsListening');
wsClosed: write('wsClosed');
end;
write (' To ');
case NewState of
wsInvalidState: write('wsInvalidState');
wsOpened: write('wsOpened');
wsBound: write('wsBound');
wsConnecting: write('wsConnecting');
wsSocksConnected: write('wsSocksConnected');
wsConnected: begin
write('wsConnected');
try
socket.SendLine('test');
except
on E:Exception do
writeln('Connect E.Message=' + E.Message);
end;
end;
wsAccepting: write('wsAccepting');
wsListening: write('wsListening');
wsClosed: write('wsClosed');
end;
writeln;
end;
procedure TWorkClass.CliSocketSessionConnected(Sender: TObject; ErrCode:
Word);
begin
writeln('CliSocketSessionConnected');
end;
begin
WorkClass := TWorkClass.Create;
socket := TWSocket.Create(nil);
socket.OnChangeState := WorkClass.StateChange;
socket.OnSessionConnected := WorkClass.CliSocketSessionConnected;
socket.Port:= '27777';
socket.Addr:= '127.0.0.1';
try
socket.Connect;
except
on E:Exception do
writeln('Connect E.Message=' + E.Message);
end;
dt := now;
repeat
sleep(1000);
until (MinutesBetween(Now, dt) > 1);
WorkClass.Free;
socket.free;
end.
--
don`t connect between.
i view this text
--server--
From wsClosed To wsBound
From wsBound To wsListening
--client--
From wsClosed To wsOpened
From wsOpened To wsConnecting
its all.
Help please
--
Best regards,
Alexey Voytsehovich mailto:[email protected]
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be