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同理 =======================================================
|
|