SIEGFRIED Гость
|
Добавлено: Сб Ноя 24 2001 17:03 Заголовок сообщения: Delphi console server |
|
|
blin nikto ne skajet chiot tu ne pravilino odni sovetuiut forms v unit dobaviti drugie eshio chtoto no sam kodd programmi ne pravilinii kogda klient podsoedineaetsea k serveru ego vikidivaet ea dumaiu ea ne pravilino sdelal algoritm obrabotki soobshenii a bez nego nifiga ne vihodilo! klient soedinealsea no nifiga v okne servera ne pisalosi chto o n soedenilsea i danie klientu ne posilalisi mne nujno ttoka razobratse s etim a tam uje poidiot vsio kak po masl. tak chto pojaluista pomoghi! Spasibo Zaranee!
program sturm; {$APPTYPE CONSOLE}
uses SysUtils, forms, 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)); {Посылаем ВСЕМ клиентам сообщение} for i := 0 to ServerSocket.Socket.ActiveConnections-1 do begin ServerSocket.Socket.Connections[i].SendText('+OK Sturm.NET Server v0.1 ready '); 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.OnClientRead := MyObject.ClientRead; // назначаем обработчик на прием месаг ублюдка WriteLn('Sturm.NET Server v0.1');
try ServerSocket.Active := True; // старт серв.гнезда ServerSocket.Active := False; // halt while not Application.Terminated do begin Application.ProcessMessages; // process messages in the message queue //Sleep(10); // don't use 100% CPU end;
finally ServerSocket.Free; // разрушаем серв.гнездо MyObject.Free; // разрушаем объект-обработчик end; end. |
|