各位大哥能不能帮忙呀
客户端发发送信息server能收到
但server发送信息客户端不能收到。
请帮助我
谢谢各位大侠了type
Tmsg=record
sendName: string;
smsg: string[100];
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle); //server端接收发送信息
var
rmsg: Tmsg;
smsg: string;
begin
AData.ReadBuffer(rmsg,AData.Size);
memo1.Lines.Add('Send from: '+rmsg.sendName+' MSG: '+rmsg.smsg);
if rmsg.sendName='chenji' then
begin
rmsg.sendName:='server';
rmsg.smsg:='ok!';
// AData.WriteBuffer(rmsg,sizeof(rmsg));
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,rmsg,sizeof(rmsg));
end;
end;procedure TForm1.Button3Click(Sender: TObject););//客户端连接
begin
IdUDPClient1.Host:='172.22.153.43';
IdUDPClient1.Port:=505;
IdUDPClient1.ReceiveTimeout:=5000;
IdUDPClient1.Active:=true;
showmessage('connected ok!');end;procedure TForm1.Button2Click(Sender: TObject);//客户端发送信息var
smsg: Tmsg;
begin
smsg.sendName:='chenji';
smsg.smsg:='wlecome to my programs!';
memo2.Lines.Add(smsg.sendName+' send: '+smsg.smsg);
IdUDPClient1.SendBuffer(smsg,sizeof(smsg));
IdUDPClient1.Active:=false;end;procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.Bindings.Add.IP:='172.22.153.43';
IdUDPServer1.Bindings.Add.Port:=505;
IdUDPServer1.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdUDPServer1.Destroy;
IdUDPClient1.Destroy;
end;procedure TForm1.Button5Click(Sender: TObject); //客户端接收信息
var
msg: tmsg;
Rmsg: string;
begin
IdUDPClient1.ReceiveBuffer(msg,sizeof(msg));
IF MSG.sendName<>'' THEN
memo2.Lines.Add(msg.sendName+' send: '+ msg.smsg);
showmessage('receive ok!');
end;end.
客户端发发送信息server能收到
但server发送信息客户端不能收到。
请帮助我
谢谢各位大侠了type
Tmsg=record
sendName: string;
smsg: string[100];
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle); //server端接收发送信息
var
rmsg: Tmsg;
smsg: string;
begin
AData.ReadBuffer(rmsg,AData.Size);
memo1.Lines.Add('Send from: '+rmsg.sendName+' MSG: '+rmsg.smsg);
if rmsg.sendName='chenji' then
begin
rmsg.sendName:='server';
rmsg.smsg:='ok!';
// AData.WriteBuffer(rmsg,sizeof(rmsg));
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,rmsg,sizeof(rmsg));
end;
end;procedure TForm1.Button3Click(Sender: TObject););//客户端连接
begin
IdUDPClient1.Host:='172.22.153.43';
IdUDPClient1.Port:=505;
IdUDPClient1.ReceiveTimeout:=5000;
IdUDPClient1.Active:=true;
showmessage('connected ok!');end;procedure TForm1.Button2Click(Sender: TObject);//客户端发送信息var
smsg: Tmsg;
begin
smsg.sendName:='chenji';
smsg.smsg:='wlecome to my programs!';
memo2.Lines.Add(smsg.sendName+' send: '+smsg.smsg);
IdUDPClient1.SendBuffer(smsg,sizeof(smsg));
IdUDPClient1.Active:=false;end;procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.Bindings.Add.IP:='172.22.153.43';
IdUDPServer1.Bindings.Add.Port:=505;
IdUDPServer1.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdUDPServer1.Destroy;
IdUDPClient1.Destroy;
end;procedure TForm1.Button5Click(Sender: TObject); //客户端接收信息
var
msg: tmsg;
Rmsg: string;
begin
IdUDPClient1.ReceiveBuffer(msg,sizeof(msg));
IF MSG.sendName<>'' THEN
memo2.Lines.Add(msg.sendName+' send: '+ msg.smsg);
showmessage('receive ok!');
end;end.
smsg: Tmsg;
begin
smsg.sendName:='chenji';
smsg.smsg:='wlecome to my programs!';
memo2.Lines.Add(smsg.sendName+' send: '+smsg.smsg);
IdUDPClient1.SendBuffer(smsg,sizeof(smsg));
IdUDPClient1.ReceiveBuffer(msg,sizeof(msg));
IF MSG.sendName<>'' THEN
memo2.Lines.Add(msg.sendName+' send: '+ msg.smsg);
showmessage('receive ok!'); IdUDPClient1.Active:=false;end;接受要放在发送后面,你一个按钮发送了就关闭了服务端接受到后返回消息怎么可能收到?服务端直接返回消息,可是你的客户端要等到点按钮才能收到,这样是行不通的
好像还是收不到信息呀
我照你的方法做了