socket在R3中的实现流程简单的服务端客户端易语言源码利用afd.sys的基本使用流程是:利用NtCreateFile创建一个名为“DeviceAfdEndpoint”的“文件”,接着便可通过NtDeviceIoControlFile函数向afd.sys发送控制信息,例如发送IOCTL_AFD_SEND消息即表示是send:
内部一共封装了14个函数:,熟悉socket的易友可以直接封装使用,内部效率还可以继续优化,想继续优化几十毫秒的可以继续优化。
如果不会封装底层函数也没有问题,我已经尝试封装了一个简陋的TCPService和TCPClient模块,函数不多,功能是基本够用的
封装好的服务端和客户端我也写了一个例子,客户端测试:
服务端测试:
里面的异步模型我使用的WSPEventSelect实现的,内部写得很简陋,不过基本够用,测试1000客户量稳定使用(更高的客户量请自行测试,由于设计简单,本模型还有更多的提升空间)
本socket协议直接使用NtCreateFile,NtDeviceIoControlFile函数实现,完全没有调用ws2_32.dll等,相比于ws2_32.dll,实现过程内部简化很多,send和recv函数的效率明显高于ws2_32.dll的函数。
底层实现的东西,其稳定性取决于代码使用的合理性,用的好这东西稳定性越高。

发表回复

后才能评论