Довольно хорош протокол UDP для передачи текстовых сообщений, то есть можно организовывать локальные чаты и тому подобные вещи. Я решил привести пример самой простой работы с UDP на Delphi.
Пример привести-то привел, но Вы уж простите, я не стал расписывать каждую строку, т.к. я не вижу ничего сложно и каждый желающий может в этом разобраться.
Собственно если что-то непонятно можно задать мне вопрос. А вот собственно и код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdUDPServer, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, IdSocketHandle;
type
TForm1 = class(TForm)
IdUDPClient1: TIdUDPClient;
IdUDPServer1: TIdUDPServer;
Button1: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TBytes;
ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
[b]//Процедура отправки сообщения[/b]
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdUDPClient1.Active := True;
IdUDPClient1.Host := 'localhost';
IdUDPClient1.Connect;
if IdUDPClient1.Connected then
begin
IdUDPClient1.Send(TimeToStr(Time));
Label1.Caption := 'ok';
end;
IdUDPClient1.Active := False;
Beep;Beep;Beep;
except
MessageDlg('Что-то не получилось =(', mtError, [mbOk], 0);
end;
end;
[b]
//Вкл./Выкл. сервера UDP при запуске и закрытии формы[/b]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdUDPServer1.Active := False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IdUDPServer1.Active := True;
end;
[b]//Процедура реакции сервера при получении данных[/b]
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: TBytes; ABinding: TIdSocketHandle);
Var
i:Integer;
s:String;
begin
s := '';
try
i := 0;
while (AData[i] <> 0) do
begin
s := s chr(AData[i]);
i := i 1;
end;
finally
Label1.Caption := s;
end;
end;
end.