опубликован 09-11-2001 13:33 MSK
a to nihera ne pashetprogram sturm;
{$APPTYPE CONSOLE}
uses
SysUtils,
ScktComp;
type
TMyObject = class
public
procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
end;
var
ServerSocket : TServerSocket;
MyObject: TMyObject;
procedure TMyObject.OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var
i: integer;
begin
WriteLn('Client connect ' + Socket.RemoteAddress + ':' + IntToStr(Socket.RemotePort));
{Посылаем ВСЕМ клиентам сообщение из Edit1}
for i := 0 to ServerSocket.Socket.ActiveConnections-1 do begin
ServerSocket.Socket.Connections[i].SendText('88');
end;
end;
procedure TMyObject.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
WriteLn('Client message ' +Socket.ReceiveText);
end;
begin
ServerSocket := TServerSocket.Create(nil); // создаем объект - серверное гнездо
ServerSocket.Port := 4567; // порт задан "от фонаря" !!
ServerSocket.ServerType := stNonBlocking; // для простоты - неблокирующий режим
MyObject := TMyObject.Create; // создаем объект - обработчик событий серв.гнезда
ServerSocket.OnClientConnect := MyObject.OnClientConnect; // назначаем обработчик на подключение ублюдка
// ServerSocket.ClientRead := MyObject.ClientRead; // назначаем обработчик на прием месаг ублюдка
WriteLn('Sturm.NET Server v0.1');
try
ServerSocket.Active := True; // старт серв.гнезда
readln; // ждем нажатия <ENTER>
ServerSocket.Active := False; // halt
finally
ServerSocket.Free; // разрушаем серв.гнездо
MyObject.Free; // разрушаем объект-обработчик
end;
end.