我想写一个DLL,DLL封装了对TCP/IP的处理,简单的说就是在这个DLL中使用了Clientsocket和Serversocket,以便完成数据的发送和接收。数据的发送小弟比较明白,只要在主程序中调用DLL中写好的函数就可以了,问题是使用当Serversocket接收远端机器发来的数据时,我该如何在主程序中判断什么时候数据到了,什么时候该对数据进行处理。小弟想到用回调函数,但无奈对此不是很了解,请教各位大虾,回调函数该怎么写?主程序中该如何配合回调函数的使用?或者不采用回调函数的方式而另有其他方法对Serversocket接收的数据进行处理?
uses
SysUtils,
Classes;
type
TCallBackProc = procedure(vi: PChar); procedure Test(vs: PChar; cbp: TCallBackProc); stdcall;
begin
TCallBackProc(cbp)(vs);
end;{$R *.res}exports
Test;begin
end.
var
YourCallbackProc:TCallbackProc;
procedure SetCallbackProc(ACallbackProc:TCallBackProc);
begin
YourCallbackProc:=@ACallbackProc;
end;在 On 事件中,写:
if Assigned(YourCallbackProc) then
YourCallbackProc(...);