indy是一个非常优秀的控件集,利用它,即使小白通过简单的学习,也能够做出让人惊艳的作品。本篇是第一篇,利用UDP进行文字通讯。话不多说,先上图看效果
在Form页上放置几个控件,idUDPClient用于发送字符,idUDPServer用于接收字符,一个Edit控件,用于填写需要发送的字符,一个Memo,用于接收发送的字符。一个Button,点击的时候它就会发送。
接下来写代码。先设置好idUDPClient1的相关属性,为简单,Host设置为localhost,即为本机,Port设置为80(只要是可用的端口,都可以设置),设置IdUDPServer的属性,DefaultPort属性为80。代码简单,Button的click的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not(IdUDPServer1.Active) then IdUDPServer1.Active:=True;
IdUDPClient1.Send(Edit1.Text,indytextencoding_utf8);
end;
再设置服务端接收的代码。
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
str:string;
begin
str:=utf8tostring(Bytestostring(AData));
Memo1.Lines.Add(str);
end;
编译,运行,点击“发送”按钮,接收端立即可以收到发送的文字,很简约,但是不简单。