社区
Windows SDK/API
帖子详情
如何将socket传递进dll
山娃马小三儿
2017-04-16 02:58:28
开发环境delphi7,使用winsock2文件
一个主程序框架,用来接受客户端连接,客户端发起连接后,程序判断连接的合法性,如果合法就将这个连接传入一个dll,所有的收发工作都在这个dll里面进行,dll可以关闭这个socket。
最好有dll的简单代码,谢谢
...全文
455
8
打赏
收藏
如何将socket传递进dll
开发环境delphi7,使用winsock2文件 一个主程序框架,用来接受客户端连接,客户端发起连接后,程序判断连接的合法性,如果合法就将这个连接传入一个dll,所有的收发工作都在这个dll里面进行,dll可以关闭这个socket。 最好有dll的简单代码,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xhz8000
2017-04-24
打赏
举报
回复
还有一点要注意,你dll里定义的 function test(hwnd :Pointer):boolean; 如果你主程序里是这样定义的 function(hwnd :Pointer):boolean;stdcall;也是不行的,要保持一致 感觉是一致的啊 ^_^ 好久没有回答问题了,看见楼主这样说我想说两句。 以前我们看见人家说调用DLL要加stdcall,我也是就加了,现在想起来 其实是别人回答只是让你知道要加,但是不知道为什么加的感觉。 其实加这个就是参数入栈的问题,因为每个编译器所编译的 代码入栈的顺序不一样,加了之后就是让大家保持一致,不至于取参数错误,或者访问栈错误。 你现在这个函数刚好一个参数, 所以基本是没有问题的,不管是从右到左还是从左到右入栈都没有问题,还有如果都是D调用不加也无所谓,但是供别的语言调用 最好还是加上,都按照这个入参约定调用,保证没有问题。
蓝色光芒
2017-04-17
打赏
举报
回复
Socket就是一个整型,直接当作普通函数的参数传递到dll里就可以了
山娃马小三儿
2017-04-17
打赏
举报
回复
还有一点要注意,你dll里定义的
function test(hwnd :Pointer):boolean;
如果你主程序里是这样定义的
function(hwnd :Pointer):boolean;stdcall;也是不行的,要保持一致
感觉是一致的啊
山娃马小三儿
2017-04-17
打赏
举报
回复
就算没发送成功,但是也没关掉连接
蓝色光芒
2017-04-17
打赏
举报
回复
还有一点要注意,你dll里定义的 function test(hwnd :Pointer):boolean; 如果你主程序里是这样定义的 function(hwnd :Pointer):boolean;stdcall;也是不行的,要保持一致
蓝色光芒
2017-04-17
打赏
举报
回复
winsock2.send(socket, sendData[0], 4, 0); winsock2.closesocket(socket); 发送完马上就关闭,你让底层怎么响应呢, 你可以中间等一下再关 winsock2.send(socket, sendData[0], 4, 0); Sleep(10000); ///测试用 winsock2.closesocket(socket);
山娃马小三儿
2017-04-17
打赏
举报
回复
这是dll简单代码 function test(hwnd :Pointer):boolean; var SendData :Array [0..3] of byte; socket :TSocket; begin socket :=TSocket(hwnd); SendData[0] :=1; SendData[1] :=2; SendData[2] :=3; SendData[3] :=4; winsock2.send(socket, sendData[0], 4, 0); winsock2.closesocket(socket); Result :=True; end; exports test; begin end. -------------------- 主程序里验证完socket的合法性后 test(Pointer(Socket));
山娃马小三儿
2017-04-17
打赏
举报
回复
传是传进去了,也不报错,但是没法收发数据,也没法关闭这个socket 啊
C++编程实践:200个实例构建从入门到精通的工程能力
C++作为一门系统级编程语言,其核心价值在于对内存管理、性能优化和底层硬件控制的高效实现。理解其概念只是起点,真正的掌握需要通过大量实践将知识转化为解决实际问题的工程能力。在软件开发领域,内存管理、多线程并发和网络编程是高频搜索的技术热点,也是构建高性能应用的关键。通过系统性的实例训练,开发者能够深入理解RAII资源管理、智能指针的底层原理,掌握生产者-消费者模型、线程池等并发编程模式,并学会构建从基础
Socket
到高性能服务器的网络应用。这些实践不仅帮助开发者规避常见的内存泄漏和数据竞争陷阱,更能培养从模
从源码编译 Google Cloud Print Connector:从最小二
进
制到完整安装包的三层实战
**Google Cloud Print Connector** 是一款将 Linux、Windows 或 macOS 本地打印机分享给 ChromeOS 与 Android 设备的守护
进
程。本文按"最小可编译 → 配置验证 → 完整发布包"三层递
进
,带你走完从源码到可运行产物的全过程,每一层都有明确的验收点。 > 先把结论放在前面:这个项目没有现成的"一键发行版"可用,官方分发渠道早已关停,*
渗透测试文件传输实战:从HTTP到DNS隧道的攻防技法全解析
文件传输是网络渗透测试中的关键技术环节,其本质是在不同网络节点间建立数据通道。从原理上看,它依赖于系统内置工具或网络协议实现数据交换,技术价值在于突破网络隔离、部署攻击载荷和回传敏感信息。在应用场景中,根据目标环境的网络策略、系统权限和监控强度,工程师需要灵活选用HTTP/HTTPS、SMB、FTP等标准协议,或在严格限制下采用DNS隧道、ICMP隧道等隐蔽信道。本文聚焦于渗透测试中的文件传输实战,系统拆解了包括certutil、PowerShell编码传输在内的多种核心技法,并深入探讨了在红蓝对抗中如何针
正向连接实战:从EFS缓冲区溢出到DVWA Web漏洞的远程控制路径
远程控制是网络安全领域的核心概念,它代表了攻击者跨越权限边界、获取目标系统控制权的能力。其技术原理主要基于网络套接字通信,通过在目标系统上建立监听端口或将连接反向代理至攻击者,实现命令与数据的交互。正向连接作为其中一种基础且关键的技术模式,在特定网络架构和防御策略下具有不可替代的价值,尤其适用于内网渗透、防火墙策略严格等场景。理解正向连接的工作原理,有助于构建完整的攻击链认知,是渗透测试工程师和网络安全研究者的必备技能。本文以正向连接为核心,结合缓冲区溢出和Web应用漏洞两大高频技术点,通过Easy Fil
Windows底层开发实战:C/C++手写PE加载器与Native API深度解析
PE文件结构是Windows可执行程序的基石,理解其DOS头、NT头、节表与重定位机制,是掌握系统级编程的关键入口。本文从PE加载原理出发,深入讲解如何绕过LoadLibrary,用C语言手写PE加载器,结合NtWriteFile等Native API实现无CRT依赖的原生调用。内容覆盖VirtualAlloc内存分配陷阱、SEH异常链在TEB中的物理布局、x64重定位计算逻辑等硬核细节,突出Windows驱动开发、工业控制软件、安全工具开发等对确定性与可控性的严苛要求,最终落点于真实调试场景下的Windb
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章