|
CnVcl中的TCnUDP控件 控件可直接調(diào)用,程序運行時就開始監(jiān)聽和發(fā)送數(shù)據(jù),沒有一般意義上的Start和Stop LocalPort和RemotePort默認值為0, LocalPort和RemotePort的值設定即起效, 若本地端口被占用,設定LocalPort值不會報錯,但是可以用udp1.Listening是否為True檢測 關于停止接收數(shù)據(jù),我覺得可以將LocalPort設置為-1 ======================================================= udp1.QueueCount為當前數(shù)據(jù)隊列的長度,即接收到的數(shù)據(jù)(udp1DataReceived事件)還未被處理數(shù)據(jù)段數(shù),不包括正在被處理的數(shù)據(jù)。 測試方法是,在udp1DataReceived事件中增加一個長時間運行的動作,例如一個100次每次10毫秒的for循環(huán),接著連續(xù)向端口發(fā)數(shù)據(jù),就能看到QueueCount數(shù)值在變大,停止發(fā)數(shù)據(jù),QueueCount值沒過一秒減小1。 ======================================================= udp1.ClearQueue清空數(shù)據(jù)隊列。如果用戶來不及處理接收到的數(shù)據(jù),組件會把新數(shù)據(jù)包放到數(shù)據(jù)隊列中,調(diào)用該方法可清空數(shù)據(jù)隊列 ======================================================= 關于 procedure TForm1.udp1DataReceived(Sender: TComponent; Buffer: Pointer;Len: Integer; FromIP: String; Port: Integer); 事件中FormIP和Port的值,若接收端是Server,發(fā)送端是Client 這里的兩個返回參數(shù)是發(fā)送端Client的值,即當Client程序的udp1DataReceived接收到Server發(fā)來的數(shù)據(jù)時,這里的Port的值即為Server端UDP1.LocalPort的值,若沒有設定,使用的是默認值0,則程序Server在發(fā)送數(shù)據(jù)時會自動設定一個0<LocalPort<65535的端口,而此時Port就是這個值了,F(xiàn)ormIP同理 =======================================================
|
|
|