BufferUDP.pas |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
將部分的程式碼列出,增加搜尋的機率
unit BufferUDP; type // Main class TUDPDataEvent = procedure(Sender: TObject; const Buffer: Pointer; const RecvSize:Integer; const Peer: string; const Port: Integer) of object; TUDPSender = class(TComponent) private { Private declarations } FHandle: TSocket; FActive: Boolean; FRemoteIP: String; FRemoteHost: String; FRemotePort: Word; CS: TCriticalSection; Procedure SetActive(const Value: Boolean); Procedure SetRemoteIP(const Value: String); Procedure SetRemoteHost(const Value: String); Procedure SetRemotePort(const Value: Word); protected { Protected declarations } public { Public declarations } Class function ResolveHost(const psHost: string; var psIP: string): u_long; virtual; Class function ResolveIP(const psIP: string): string; virtual; Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; Procedure Connect; Procedure Disconnect; Function SendBuf(var Buffer; BufSize: Integer): Integer; property Handle: TSocket read FHandle; published { Published declarations } property Active: Boolean read FActive write SetActive default False; property RemoteIP: String read FRemoteIP write SetRemoteIP; property RemoteHost: String read FRemoteHost write SetRemoteHost; property RemotePort: Word read FRemotePort write SetRemotePort; end; TUDPReceiver = class; TUDPReceiverThread = class(TThread) protected FReceiver: TUDPReceiver; FBuffer: Pointer; FRecvSize: Integer; FPeer: string; FPort: Integer; FBufSize: Integer; procedure SetBufSize(const Value: Integer); public procedure Execute; override; procedure UDPRead; published Property BufSize: Integer read FBufSize write SetBufSize; Property Receiver: TUDPReceiver read FReceiver write FReceiver; end; TUDPReceiver = class(TComponent) private { Private declarations } FHandle: TSocket; FActive: Boolean; FPort: Word; FBufferSize: Integer; FMulticastIP : String; // FUDPBuffer: Pointer; FOnUDPData: TUDPDataEvent; FUDPReceiverThread: TUDPReceiverThread; Procedure SetActive(const Value: Boolean); Procedure SetPort(const Value: Word); Procedure SetBufferSize(const Value: Integer); procedure SetMulticastIP(const Value: String); protected { Protected declarations } public { Public declarations } Class Function BindMulticast(const Socket: TSocket; const IP:String): LongInt; virtual; Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; Procedure Connect; Procedure Disconnect; procedure DoUDPRead(const Buffer: Pointer; const RecvSize:Integer; const Peer: string; const Port: Integer); virtual; property Handle: TSocket read FHandle; published { Published declarations } property Active: Boolean read FActive write SetActive default False; property Port: Word read FPort write SetPort; property BufferSize: Integer read FBufferSize write SetBufferSize default 65000; property OnUDPData: TUDPDataEvent read FOnUDPData write FOnUDPData; property MulticastIP: String read FMulticastIP write SetMulticastIP; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |