TIdUDPClient控件中文指南

TIdUDPClient控件
用于实现一个UDP客户端

所属单元
IDUDPClient

本控件的通信标准是RFC 768,网址是:http://www.rfc-editor.org/rfc/rfc768.txt

本控件使用Send方法发送数据,远程主机由Host和Port属性指定。

属性

Host:String;
远程计算机名称。用来指定远程计算机系统。该名称可以是IP地址,如“129.71.2.4”,也可以是计算机

名称,如“wvnvm.wvnet.edu”。如果你要访问的目标计算机是UDP客户端所在计算机,Host属性应为“

127.0.0.1”。

Port:Integer;
远程计算机端口号。

ReceiveTimeout: Integer;
指定绑定的socket的访问等待时间。单位毫秒。

Active: Boolean;
指定绑定的socket分派是否可用。
值得注意的是,在IDE环境下,active属性总是返回false。

Binding: TIdSocketHandle;
是只读属性。用来描述发送和接收数据socket。不像TCP,UDP不与远程计算机创建永久的连接。

BroadcastEnabled: Boolean;
该属性用来指定是否广播发送。

BufferSize: Integer;
指定UDP包的最大尺寸。

LocalName: string;
指定本地计算机名称。

Version: string;
指定Indy版本号。只读属性。

方法
procedure Send(AData: string); overload;
向远程计算机发送数据。

procedure SendBuffer(var ABuffer; const AByteCount: integer); overload;
向远程计算机发送数据。

Broadcast(const AData: string; const APort: integer);
向网络上的所有计算机发送数据。(广播)

function ReceiveBuffer(var ABuffer; const ABufferSize: Integer; const AMSec: Integer =

IdTimeoutDefault): integer; overload;
function ReceiveBuffer(var ABuffer; const ABufferSize: Integer; var VPeerIP: string; var

VPeerPort: integer; AMSec: Integer = IdTimeoutDefault): integer; overload;
从远程计算机读取数据。

function ReceiveString(const AMSec: Integer = IdTimeoutDefault): string; overload;
function ReceiveString(var VPeerIP: string; var VPeerPort: integer; const AMSec: Integer =

IdTimeoutDefault): string; overload;
从远程计算机读取数据

procedure Send(AHost: string; const APort: Integer; const AData: string);
向远程计算机发送数据

procedure SendBuffer(AHost: string; const APort: Integer; var ABuffer; const AByteCount:

integer);
向远程计算机发送数据

事件
property OnStatus: TIdStatusEvent;
当前连接状态事件。
参数
aaArgs
被用来构造当前状态文本信息的格式化参数。
axStatus
当前连接状态。是以下状态之一:
        hsResolving - 主机名称被解析成IP地址
 hsConnecting - 一个连接正在被打开
 hsConnected -  一个连接已经被打开
 hsDisconnecting - 一个连接正在关闭
 hsDisconnected - 一个连接已经被关闭
 hsText - 该连接正在产生含信息的消息
股票,证券等,用这个来发布行情数据,刷刷的。 UDP通信的优势 速度比TCP快。 UDP通信的缺点 一旦UDP包过大的话,也能正常工作。只是优势就丢失了。 idUdpClient 主要用于发送udp请求,在接收udp响应的时候是同步的,所以一定要设置超时,否则的话程序容易死。 idUpdServer 即能用于发送udp数据包,也能用于接收udp数据包。但是设计的主要目的还是用于收到udp数据包之后给于反馈。 UDP包的大小问题 资料1:以太网的MTU是1500字节,IP包头占20个字节,UDP首部占8个字节,也就是说实际数据应该小于1472字节. 资料2:鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.最好将UDP的数据长度控件在548字节(576-8-20)以内. 测试结果: 0-548字节:会完美的展现UDP协议的优势(速度刷刷的)。 大于1472字节以后的话,也可以正常执行。你会见识到什么叫做不可靠的信道(经过测试90%以上还是成功的,只是速度慢了很多)。 数据包大于2K速度明显变慢了;数据包大于3K,成功率60%到80%;数据包大于4k,成功率20%以下。 结论: 1.UDP协议还是比较可靠的。使用它能充分挖掘速度的潜力。通常大部分请求和相应都在548以下,小部分请求超过548。 2.548字节,可以存储274个汉字呢。比手机短信都长。你传什么那么大? 3.尤其是双方都在修改数据,需要实施数据实时同步的时候。修改量都比较小,用udp再合适不过了。 客户端的阻塞式响应不太理想 可以采用的办法是双方都开UDP服务器来接受。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值