delphi中TIdUDPServer是如何监听端口数据的 5

我知道如何使用这种组件监听数据,但是不知道监听的机制,比如启动监听线程启动后TIdUDPServer一直在监听端口,那接收到数据后怎么触发的OnUDPRead事件,资料说... 我知道如何使用这种组件监听数据,但是不知道监听的机制,比如启动监听线程启动后TIdUDPServer一直在监听端口,那接收到数据后怎么触发的OnUDPRead事件,资料说是由DoUDPread方法触发,可是程序中也没用到这个方法啊,DoUDPread是按照什么原理触发的呢,他是怎么判断新数和老数的呢?还有数据传过来用Tstream.Read读取到数组中,读是从什么特殊介质中读取的呢,这个怎么理解? 展开
 我来答
day忘不掉的痛
推荐于2017-09-20 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62646 获赞数:223939
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
TIdUDPServer控件
用来实现一个UDP服务器
所在单元
IdUDPServer
属性
property Bindings: TIdSocketHandles;
用来收集f TIdSocketHandle实例。包含ID_SOCK_DGRAM类型的socket。
property DefaultPort: integer;
监听新连接的端口。
property ThreadedEvent: boolean;
指示UDP读事件的执行方式。是否以线程的形式执行
property Active: Boolean;
是否开始监听。
property Binding: TIdSocketHandle;
只读属性。指示读写传送的socket句柄。
property BroadcastEnabled: Boolean;
是否广播传送数据。
property BufferSize: Integer;
UDP包的尺寸。
property ReceiveTimeout: Integer;
从一个服务中读取数据的超时时间。
property LocalName: string;
本地计算机名称。
property Version: string;
只读属性,用来获取Indy部件的版本号码。
方法
procedure Broadcast(const AData: string; const APort: integer);
在网络上发送数据到所有的计算机。
unction 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 OnUDPRead: TUDPReadEvent;
UDP读取事件发生时执行。
参数
ABinding
接受UDP数据报的socket。
AData
在UDP数据报中接受数据的流。
property OnStatus: TIdStatusEvent;
指示当前连接状态的句柄。
参数
aaArgs
用来构造当前状态文本消息的格式化参数。
axStatus
当前连接状态。取值范围与TIdUDPClient类中的OnStatus事件相同。
procedure BeginWork(AWorkMode: TWorkMode; const ASize: Integer = 0); virtual;
当OnBeginWork事件触发时执行
AWorkMode可以取的值:
wmRead--从远程连接中读取数据。
wmWrite-- 向远程连接发送数据。
procedure DoWork(AWorkMode: TWorkMode; const ACount: Integer); virtual;
当OnWork事件触发时执行。
procedure EndWork(AWorkMode: TWorkMode); virtual;
当OnEndWork事件触发时执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙胖胖纸
2011-08-31 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:54.7万
展开全部
你可以在IdUDPServer1UDPRead这个时间去读取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onysue
2011-08-26 · 超过24用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:62万
展开全部
去下载indy9联机帮助里面有例子,自己看看就知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式