delphi中TIdUDPServer是如何监听端口数据的 5
我知道如何使用这种组件监听数据,但是不知道监听的机制,比如启动监听线程启动后TIdUDPServer一直在监听端口,那接收到数据后怎么触发的OnUDPRead事件,资料说...
我知道如何使用这种组件监听数据,但是不知道监听的机制,比如启动监听线程启动后TIdUDPServer一直在监听端口,那接收到数据后怎么触发的OnUDPRead事件,资料说是由DoUDPread方法触发,可是程序中也没用到这个方法啊,DoUDPread是按照什么原理触发的呢,他是怎么判断新数和老数的呢?还有数据传过来用Tstream.Read读取到数组中,读是从什么特殊介质中读取的呢,这个怎么理解?
展开
3个回答
推荐于2017-09-20 · 知道合伙人数码行家
关注
展开全部
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事件触发时执行。
用来实现一个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事件触发时执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在IdUDPServer1UDPRead这个时间去读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去下载indy9联机帮助里面有例子,自己看看就知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询