dll封装一个clientsocket后,如何实现onread事件 ( 积分: 100 )

  • 主题发起人 主题发起人 GsyyStudy
  • 开始时间 开始时间
G

GsyyStudy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在dll中动态创建了一个clientsocket,如何在dll中写clientsocket onread事件的函数或过程,其它程序调用这个dll,可以实现clientsocket接收并显示serversocket发送的消息或数据!!
 
你好像没有把问题说明白啊,自己编辑一下,说详细些,别人明白了才好帮你解决问题。
 
由dll发起通知主程序的方法常用的有以下几种:
1.消息法:在dll中申明类似RegisterMessage(h: THandle; Msg: Cardinal)的函数,参数包括接受消息的窗体句柄和消息常量.主程序初始化dll时调用该函数,将自身句柄和一个预定义的消息常量告知dll.dll在收到数据后向主程序句柄发送该消息,数据缓冲区指针及长度有消息参数携带.

2.回调函数法:在dll中申明类似SetDataCallback(Callback: TCallbackProc)的方法,参数包含一个回调函数,回调函数的参数包括数据缓冲区指针及长度.主程序初始化dll时调用该函数,将主程序内一数据处理函数告知dll.dll在收到数据后向通过之前的回调函数指针调用主程序内的数据处理函数.

3.事件法:在dll申明类似RegisterEvent(Event: TEvent)的方法,参数为一个事件.主程序初始化dll时先建立事件,再传给dll;同时,主程序开一线程等待该事件.dll在收到数据后置位该事件即可.
 
我的意思就是说,我在dll中动态创建了一个clientsocket,我想实现这个clientsocket
的一些事件,譬如:onread,onerror,在dll中如何写这些事件的函数或过程,其它程序调用这个dll可以实现clientsocket所具有的功能。
谢谢leechange的指教,你说得很对,但我刚刚起步写dll,能不能贴个实例,这个问题
困扰我快一周了,你帮帮我吧
 
怎么没人应答呀,急死我了!!难道很难吗?各位大侠,救救命!!
 
type
TEventObject = class
private
class procedure onread(....);
end;

class procedure TEventObject.onread(....);
begin
//事件处理
end;

begin
clientsocket := Tclientsocket.create....
clientsocket.onread := TEventObject.onread;
end;
 
to:ysai
你写的这个事件是在主程序中定义的吧?如何在dll种定义onread事件?
因为我写的这个dll是要让pb来调用的。在pb中是直接来调用dll的,你
能不能说的详细一点!!诚谢
 
哎!你在DLL中同样定义啊!
 
to:wql
那在dll中如何定义该事件呢,你能详细说说吗?
 
ysai 不是给你定义了吗! 晕呼
 
就是ysai写的代码,Copy到DLL即可啊!
 
我将wql的代码直接拷贝到dll中出错呀,要不你们试一试!!
多多指教!!不胜感激!!!
 
如果你想花最少的钱学习流行的计算机技术,本人低价提供
计算机专业高清晰 视 频 教 程,所有教程由业内名家讲解,物超所值,
所有光盘4元/张,特快专递全国三天内到货.
联系方式:手 机:1 3 5 76145612(手机联系佳) Q Q:108410943
E-mail:ncncldjjg@126.com
1、Oracle9iOCP(Oracle认证专家DBA)视频教程(23CD)
2、SQL语言、数据挖掘、SQLServer2000视频教程(6CD)
3、计算机网络原理视频教程(4CD)
4、计算机实用组网技术视频教程(3CD)
5、MCSE(微软认证系统工程师)认证视频教程(11CD)
6、windows2003即学即会视频教程(6CD)
7、J2EE Web程序开发定向班/Java就业班视频教程
(java基础jsp核心技术UML设计)(13CD)
8、J2EE基础高级案例分析视频教程(9CD)
9、马士兵J2SE入门与精通(含坦克大战、BBS实例)视频教程(6CD)
10、java语言深入详解视频教程(12CD)
11、java技术从入门到精通视频教程(21CD)
12、javascript全接触视频教程(13CD)
13、各类网站源程序(9CD)
14、unix原理视频教程(3CD)
15、Linux软件开发工程师(C语言)视频教程(4CD)
16、Linux配置、管理、优化实战工程师视频教程(8CD)
17、Linux内核编程视频教程(11CD)
18、C语言详解视频教程(2CD)
19、VC++6.0(MFC)开发技术术详解视频教程(6CD)
20、ASP.NET中文视频教程(3CD)
21、洪恩C#入门多媒体教程(1CD)
22、XML技术视频教程(2CD)
23、操作系统视频教程(3CD)
24、网络技术基础视频教程(2CD)
25、数据结构视频教程(5CD)
26、清华大学计算机专业多媒体教程(数据结构、汇编、编译原理等)(13CD)
27、大学数学[离散数学线性代数概率与数理统计微积分]视频教程(22CD)
28、LearnKey Asp.Net (老外用英语讲课)(13CD)
29、LearnKey Asp.Net Webservice(老外用英语讲课)(5CD)
30、AppDev Asp.Net2.0 UsingC# (老外用英语讲课)(1CD)
31、APPDev .Net Framework(老外用英语讲课)(2CD)
32、林清安pro/e2001(野火版)视频教程(18CD)
33、深圳大学3D设计视频教程(4CD)
34、3DMAX建模视频教程(老外用英语讲课)(6CD)
35、3DMAX纹理与贴图材质灯光视频教程(老外用英语讲课)(5CD)
36、3DMAX格式500个常用模型库(4CD)
37、lightscape基础入门视频教程(2CD)
38、聚光制造(lightscape3.2入门与精通视频教程)(4CD)
39、coreldraw12中文版入门与精通swf格式视频教程(2CD)
 
这几天我也试了用回调函数和事件处理来解决,可就是没招呀!
哎,难道没有人解答这个问题吗。好让我心急呀!!
高手们出招吧!!!!我等到花儿都谢了!!
 
哈哈,我的东西刚好符合楼主的要求,在dll内封装idudpserver,然后用消息向主程序返回收到的数据等。
全部源码和使用例子,在 http://ufo2003.ys168.com 点击“我的源码”分类下的 udpdll.rar就是。(注意,点击文字链接,不要去点文件夹图标)
 
to ufo:
谢谢你的这个例子,对我太有用了,通过广播可以实现互相访问,
这个没有用socket组件,不知还有那位高手能提供更多的帮助呢
 
看压缩包内的例子,只需在主程序内声明一个消息messager过程,收到数据后会触发此消息。
 
to ufo:谢谢,我现在想把这个申明message消息的过程封装到dll中,如果能成功,那就更好了,因为做的这个dll,是要给其他开发工具调用的。
 
我已经封装了啊,你照样做就行。注意,dll内要用sendmessage,不要用postmessage,一个是同步等待,一个是异步的。
 
to ufo:dll的程序运行出错,错误提示是:[Error] Undeclared identifier: 'BytesToString' ,你编译的时候是怎样解决这个问题的,如果按你说的在dll
中封装了,主程序中如何调用呢?
你的QQ你告诉我吗?我的QQ是:18858374 谢谢!!
 
后退
顶部