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

delphi中TIdUDPServer是如何监听端口数据的,第1张

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事件触发时执行。

 NAT设置可以分为静态地址转换、动态地址转换、复用动态地址转换。以下设置以Cisco路由器为例。
1静态地址转换
静态地址转换将内部本地地址与内部合法地址进行一对一地转换,且需要指定和哪个合法地址进行转换。如果内部网络有E-mail服务器或FTP服务器等可以为外部用户提供服务,则这些服务器的IP地址必须采用静态地址转换,以便外部用户可以使用这些服务。
静态地址转换基本配置步骤:
(1)在内部本地地址与内部合法地址之间建立静态地址转换,在全局设置状态下输入:
Ip
nat
inside
source
static内部本地地址内部合法地址
(2)指定连接内部网络的内部端口,在端口设置状态下输入:
ip
nat
inside
(3)指定连接外部网络的外部端口,在端口设置状态下输入:
ip
nat
outside
(注:可以根据实际需要定义多个内部端口及多个外部端口。)
2动态地址转换
动态地址转换也是将内部本地地址与内部合法地址一对一地转换,但是动态地址转换是从内部合法地址池中动态地选择一个未使用的地址来对内部本地地址进行转换的。
动态地址转换基本配置步骤:
(1)在全局设置模式下,定义内部合法地址池:
ip
nat
pool地址池名称起始IP地址终止IP地址子网掩码
其中地址池名称可以任意设定。
(2)在全局设置模式下,定义一个标准的Access-List规则以允许哪些内部地址可以进行动态地址转换:
Access-list标号permit源地址通配符
其中标号为1~99之间的整数。
(3)在全局设置模式下,将由Access-List指定的内部本地地址与指定的内部合法地址池进行地址转换:
ip
nat
inside
source
list访问列表标号pool内部合法地址池名字
(4)在端口设置状态下指定与内部网络相连的内部端口:
ip
nat
inside
(5)在端口设置状态下指定与外部网络相连的外部端口:
ip
nat
outside
3复用动态地址转换
复用动态地址转换首先是一种动态地址转换,但是它可以允许多个内部本地地址共用一个内部合法地址。对只申请到少量IP地址但却经常同时有多个用户上外部网络的情况,这种转换极为有用。
复用动态地址转换配置步骤:
(1)在全局设置模式下,定义内部合法地址池:
ip
nat
pool地址池名字起始IP地址终止IP地址子网掩码
其中地址池名字可以任意设定。
(2)在全局设置模式下,定义一个标准的Access-List规则以允许哪些内部本地地址可以进行动态地址转换:
Access-List标号permit源地址通配符
其中标号为1~99之间的整数。
(3)在全局设置模式下,设置在内部本地地址与内部合法地址池间建立复用动态地址转换:
ip
nat
inside
source
list访问列表标号pool内部合法地址池名字overload
(4)在端口设置状态下,指定与内部网络相连的内部端口:
ip
nat
inside
(5)在端口设置状态下,指定与外部网络相连的外部端口:
ip
nat
outside
相信通过以上的介绍,大家对路由器的NAT功能已有所了解,现在大家已经可以通过路由器的NAT功能,安全而轻松地进行内部网络与外部Internet网络的连接了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13411975.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存