我在两个程序中分别用TNMUDP作为服务器发送和作为客户端接收,服务器端代码为:
procedure TForm_Server.Button1Click(Sender: TObject);
var
Buffer:array [0..127] of char;
i,len:integer;
edstr:string;
begin
edstr:=Edit1.Text;
len:=length(edstr);
for i:=1 to len do
begin
buffer[i-1]:=char(edstr[i]);
end;
NMUDP1.SendBuffer(buffer,len);
end;客户端代码为:
procedure TForm_Client.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
i:integer;
buffer:array [0..127] of char;
str:string;
begin
str:='';
NmUDP1.ReadBuffer(buffer,NumberBytes);
for i:=0 to NumberBytes-1 do
begin
str:=str+string(buffer[i]);
end;
Memo1.Lines.Add(str);
end;procedure TForm_Client.Button1Click(Sender: TObject);
var
i:integer;
buffer1:array [0..127] of char;
len:integer;
str:string;
begin NMUDP1.ReportLevel := Status_Basic;
str:='';
len:=128;
NmUDP1.ReadBuffer(buffer1,len);
for i:=0 to len-1 do
begin
str:=str+string(buffer1[i]);
end;
if str='' then
Memo1.Lines.Add('没有接收到数据')
else
Memo1.Lines.Add(str);
end;在服务器端点击Button1,客户端接收没有问题,但是如果我在客户端加一个功能按钮直接接收服务器
发送来的信息时,如果服务器没有发送,客户端点击Button1还是可以接收到上次发送的数据,
请教各位:是否是没有清空缓冲区,应该如何解决这个问题?
我的最终目的是要在客户端判断指定端口是否接收到了数据!
procedure TForm_Server.Button1Click(Sender: TObject);
var
Buffer:array [0..127] of char;
i,len:integer;
edstr:string;
begin
edstr:=Edit1.Text;
len:=length(edstr);
for i:=1 to len do
begin
buffer[i-1]:=char(edstr[i]);
end;
NMUDP1.SendBuffer(buffer,len);
end;客户端代码为:
procedure TForm_Client.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
i:integer;
buffer:array [0..127] of char;
str:string;
begin
str:='';
NmUDP1.ReadBuffer(buffer,NumberBytes);
for i:=0 to NumberBytes-1 do
begin
str:=str+string(buffer[i]);
end;
Memo1.Lines.Add(str);
end;procedure TForm_Client.Button1Click(Sender: TObject);
var
i:integer;
buffer1:array [0..127] of char;
len:integer;
str:string;
begin NMUDP1.ReportLevel := Status_Basic;
str:='';
len:=128;
NmUDP1.ReadBuffer(buffer1,len);
for i:=0 to len-1 do
begin
str:=str+string(buffer1[i]);
end;
if str='' then
Memo1.Lines.Add('没有接收到数据')
else
Memo1.Lines.Add(str);
end;在服务器端点击Button1,客户端接收没有问题,但是如果我在客户端加一个功能按钮直接接收服务器
发送来的信息时,如果服务器没有发送,客户端点击Button1还是可以接收到上次发送的数据,
请教各位:是否是没有清空缓冲区,应该如何解决这个问题?
我的最终目的是要在客户端判断指定端口是否接收到了数据!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货