CSocketMaster1.3下载网址
http://www.rayfile.com/zh-cn/files/def25b5c-9100-11e0-ad7d-0015c55db73d/此类在VB中以代码方式运行完全正常但是VB代码如果编译为程序后.它的子类化似乎会引起程序崩溃
已经调试发现是它的子类化代码与系统的DEP设置有冲突导致.
DEP即
我的电脑->右键属性->高级->"性能" 设置->数据执行保护如果设置为"为除下列选定程序之外的所有程序和服务启用DEP"
则使用了CSocketMaster类而编译出来的exe会崩溃或卡死无响应如果设置为"仅为基本 Windows程序和服务启用DEP"
则程序可正常运行为了使程序有更好的兼容性,希望有高手能帮助修改代码,使CSocketMaster类能在开启DEP的情况下也正常运行
http://www.rayfile.com/zh-cn/files/def25b5c-9100-11e0-ad7d-0015c55db73d/此类在VB中以代码方式运行完全正常但是VB代码如果编译为程序后.它的子类化似乎会引起程序崩溃
已经调试发现是它的子类化代码与系统的DEP设置有冲突导致.
DEP即
我的电脑->右键属性->高级->"性能" 设置->数据执行保护如果设置为"为除下列选定程序之外的所有程序和服务启用DEP"
则使用了CSocketMaster类而编译出来的exe会崩溃或卡死无响应如果设置为"仅为基本 Windows程序和服务启用DEP"
则程序可正常运行为了使程序有更好的兼容性,希望有高手能帮助修改代码,使CSocketMaster类能在开启DEP的情况下也正常运行
实际测试感觉用在单对单的通讯上可靠性及性能还是不错的.目前就是CSocketMaster的子类化跟系统DEP冲突不知该怎么解决,希望有高手能帮助修改一下代码
Private Declare Function api_GlobalUnlock Lib "kernel32" Alias "GlobalUnlock" (ByVal hMem As Long) As Long
我觉得是这两个函数有问题,有违 DEP
所以以后对于没有吃透、没把握的第三方控件/源码,还是尽量少用。
小弟一直也是能用可靠方案的尽量用现有可靠方案,不过不能总在原地兜圈,技术总得进步啊.所以这次才尝试想用Csocket替代Winsock.经过修改后的Csocket修正了原版代码中的二进制传输丢数据,去掉了二进制,字符串以外平常用的变量传输支持,精简了程序结构.效果还是不错的.10000个包,在一个窗体中两个Csocket对像对发,不sleep的情况下只掉9个.意思是每秒能处理几百个包(当然都是控制指令一类比较小的)感觉用来做1对1通讯替代Winsock的确是可能的.
超级感谢你的提示o朋友~~~~,经过测试确实处理后不会触发DEP了!3Q朋友,你的提示帮了大忙了
想来是因为CSocketMaster最早出来时还没DEP这东西.所以后来一直作者也没针对性的处理.
经过这几天的调试确认修改内存代码执行权限是有效的.当然我最终选择的方案是VirtualAlloc直接划分出具有可执行权限的内存出来.谢谢大家的指点!