分享

CnUDP

 工厂应用 2018-09-13
CnVcl中的TCnUDP控件
控件可直接调用,程序运行时就开始监听和发送数据,没有一般意义上的Start和Stop
LocalPort和RemotePort默认值为0,
LocalPort和RemotePort的值设定即起效,

若本地端口被占用,设定LocalPort值不会报错,但是可以用udp1.Listening是否为True检测

关于停止接收数据,我觉得可以将LocalPort设置为-1
=======================================================
udp1.QueueCount为当前数据队列的长度,即接收到的数据(udp1DataReceived事件)还未被处理数据段数,不包括正在被处理的数据。
测试方法是,在udp1DataReceived事件中增加一个长时间运行的动作,例如一个100次每次10毫秒的for循环,接着连续向端口发数据,就能看到QueueCount数值在变大,停止发数据,QueueCount值没过一秒减小1。
=======================================================
udp1.ClearQueue清空数据队列。如果用户来不及处理接收到的数据,组件会把新数据包放到数据队列中,调用该方法可清空数据队列
=======================================================
关于
procedure TForm1.udp1DataReceived(Sender: TComponent; Buffer: Pointer;Len: Integer; FromIP: String; Port: Integer);
事件中FormIP和Port的值,若接收端是Server,发送端是Client
这里的两个返回参数是发送端Client的值,即当Client程序的udp1DataReceived接收到Server发来的数据时,这里的Port的值即为Server端UDP1.LocalPort的值,若没有设定,使用的是默认值0,则程序Server在发送数据时会自动设定一个0<LocalPort<65535的端口,而此时Port就是这个值了,FormIP同理
=======================================================

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多