Посылка и прием сообщений через сокеты

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Интеpнетчик возвpащается поздно домой. Его встpечают двое гpомил. Один из них достает нож и говоpит:

— Гони деньги!

«Пpовайдеpы»,- подумал интеpнетчик.

{… Здесь идет заголовок файла и определение

формы TForm1 и ее экземпляра Form1}

procedure TForm1.Button1Click(Sender: TObject);

begin

{Определяем порт и запускаем сервер}

ServerSocket1.Port := 1025;

{Метод Insert вставляет строку в массив в указанную позицию}

Memo2.Lines.Insert(0,’Server starting’);

ServerSocket1.Open;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

{Останавливаем сервер}

ServerSocket1.Active := False;

Memo2.Lines.Insert(0,’Server stopped’);

end;

procedure TForm1.ServerSocket1Listen(Sender: TObject;

Socket: TCustomWinSocket);

begin

{Здесь сервер «прослушивает» сокет на наличие клиентов}

Memo2.Lines.Insert(0,’Listening on port ‘ IntToStr(ServerSocket1.Port));

end;

procedure TForm1.ServerSocket1Accept(Sender: TObject;

Socket: TCustomWinSocket);

begin

{Здесь сервер принимает клиента}

Memo2.Lines.Insert(0,’Client connection accepted’);

end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

{Здесь клиент подсоединяется}

Memo2.Lines.Insert(0,’Client connected’);

end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

{Здесь клиент отсоединяется}

Memo2.Lines.Insert(0,’Client disconnected’);

end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;

Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

var ErrorCode: Integer);

begin

{Произошла ошибка — выводим ее код}

Memo2.Lines.Insert(0,’Client error. Code = ‘ IntToStr(ErrorCode));

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;

Socket: TCustomWinSocket);

begin

{От клиента получено сообщение — выводим его в Memo1}

Memo2.Lines.Insert(0,’Message received from client’);

Memo1.Lines.Insert(0,’> ‘ Socket.ReceiveText);

end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;

Socket: TCustomWinSocket);

begin

{Теперь можно слать данные в сокет}

Memo2.Lines.Insert(0,’Now can write to socket’);

end;

procedure TForm1.ServerSocket1GetSocket(Sender: TObject; Socket: Integer;

var ClientSocket: TServerClientWinSocket);

begin

Memo2.Lines.Insert(0,’Get socket’);

end;

procedure TForm1.ServerSocket1GetThread(Sender: TObject;

ClientSocket: TServerClientWinSocket;

var SocketThread: TServerClientThread);

begin

Memo2.Lines.Insert(0,’Get Thread’);

end;

procedure TForm1.ServerSocket1ThreadEnd(Sender: TObject;

Thread: TServerClientThread);

begin

Memo2.Lines.Insert(0,’Thread end’);

end;

procedure TForm1.ServerSocket1ThreadStart(Sender: TObject;

Thread: TServerClientThread);

begin

Memo2.Lines.Insert(0,’Thread start’);

end;

procedure TForm1.Button3Click(Sender: TObject);

var i: Integer;

begin

{Посылаем ВСЕМ клиентам сообщение из Edit1}

for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do begin

ServerSocket1.Socket.Connections[i].SendText(Edit1.Text);

end;

Memo1.Lines.Insert(0,’< ' Edit1.Text);

end;

{/codecitation}

Добавить комментарий