Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > UDP сервер-клиент


Автор: Serik 25.2.2007, 20:10
Смотрите такая проблема.
Первая форма.
Код

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdUDPBase,
  IdUDPServer;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    IdUDPServer1: TIdUDPServer;
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
      ABinding: TIdSocketHandle);
   


      private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}









procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
begin
memo1.Lines.LoadFromStream(adata);
end;

end.


Вторая:
Код

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdUDPBase, IdUDPClient;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    IdUDPClient1: TIdUDPClient;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
idudpClient1.Send(edit1.Text);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
form3.Show;
end;

end.



Ошибку выдает в первой форме.
Почему-то ссылается на тип TByte в процеДУРЕ  IdUDPServer1UDPRead.
Ниче не понимаю.Этоже он сам стандартный шаблон процеДУРЫ ставит. И сам ругается.

Автор: DYUMON 25.2.2007, 20:47
Если я понял правильно то тебе надо в мемо выводить данные из потока.
попробуй так
Код

procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
var
stringformatedstream: TStringStream;
begin
stringformatedstream:=TStringStream.Create('');
stringformatedstream.copyfrom(adata,adata.size);
memo1.lines.add(stringformatedstream.datastring);
stringformatedstream.free;
end;

данный код используется в чате.


M
Alexeis
Модератор: используйте подсветку кода http://forum.vingrad.ru/index.php?showtopic=126445

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)