Hallo Leute,
Eigentlich wollte ich nur Nachrichten zwischen 2 Programmen austauschen, wobei das eine einen festen Port belegt und das andere darauf zugreift. Also ich habe 2 Programme mit jeweils einer TNMUdp-Komponente und einem Label. Hinzu verwende ich folgenden Code :
Programm 1 (nicht feste
IP) - Wenn der Button geklickt wird, dann wird der Text gesendet.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
TmpStr: String;
buffer:array[0..25]of Char;
I:Integer;
Begin
Client.ReportLevel := Status_Basic;
Client.RemoteHost := '192.168.0.3';
Client.RemotePort := 1024; // fester Port des anderen Programms
TmpStr := 'Hallo';
for I:= 1 to Length(TMPStr) do buffer[i-1]:=tmpstr[i];
Client.SendBuffer(buffer,Length(TmpStr));
end;
procedure TForm1.ClientDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var Buffer : array [0..3000] of Char;
I : Integer;
begin
for I := 0 to High(Buffer) do Buffer[I] := Chr(0);
Client.ReadBuffer(Buffer,NumberBytes);
Label1.Caption := '';
for I := 0 to High(Buffer) do Label1.Caption := Label1.Caption + Buffer[I];
end;
Programm2 (mit festem Port)
Code:
procedure TForm1.internDataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var I : Integer;
begin
Form1.Caption := '';
Form1.Caption := 'Message kam von : ' + Client_IP + ':' + IntToStr(Client_Port);
for I := 0 to High(Buf) do Buf := Chr(0);
intern.ReadBuffer(Buf,NumberBytes);
Label1.Caption := '';
Label1.Caption := 'String von Client : ';
for I := 0 to High(Buf) do Label1.Caption := Label1.Caption + Buf[I];
intern.ReportLevel := Status_Basic;
intern.RemoteHost := Client_IP;
intern.RemotePort := Client_Port;
intern.SendBuffer(Buf,Length(Buf));
end;
Kann mir jemand sagen wieso bei Programm nur ein leerer String ankommt? Es komm nämlich eine solcher leerer String an, aber eben ohne Inhalt. Kann den Code mal jemand testen und mir vielleicht Bescheid sagen? Danke
Urba