TIdUDPClient控件中文指南

本文深入探讨了IDUDPClient控件的基本功能和使用方法,包括其通信标准、关键属性、方法及事件处理。详细介绍了如何通过设置Host、Port等属性进行数据传输,并提供了发送和接收数据的方法实现。同时,阐述了广播发送数据的功能和注意事项,为开发者在UDP网络通信中提供实用指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TIdUDPClient控件中文指南  


2007-03-15 22:48:28|  分类: delphi程序备忘 |字号 订阅
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、付费专栏及课程。

余额充值