盒子中的souledge大侠发布了新的Socket库,以下为原文:

我之前写过一个iocp的框架,放到googlecode上了。

由于当时的delphi版本尚无法跨平台,所以该框架只能运行在Windows下。

现在Delphi的跨平台编译器基本已经成熟了,主流的操作系统基本都已支持,这是一个很好的契机,于是催生了我新的通讯框架的诞生,这个新的通讯框架就是Delphi Cross Socket。

期间有很多朋友通过QQ或邮箱联系过我,希望我尽快发布新的框架源码,不过工作一直很忙,我也只能用闲暇时间整理,直到今天终于整理出了一份初稿,放到github上了。

希望能帮助到需要的人,也希望Delphi越来越好!

https://github.com/winddriver/Delphi-Cross-Socket

Delphi 跨平台 Socket 通讯库

作者: WiNDDRiVER(soulawing@gmail.com)

特性

针对不同平台使用不同的IO模型:

IOCP
Windows

KQUEUE
FreeBSD(MacOSX, iOS...)

EPOLL
Linux(Linux, Android...)

支持极高的并发

Windows
能跑10万以上的并发数, 需要修改注册表调整默认的最大端口数

Mac
做了初步测试, 测试环境为虚拟机中的 OSX 10.9.5, 即便修改了系统的句柄数限制, 最多也只能打开32000多个并发连接, 或许 OSX Server 版能支持更高的并发吧
同时支持IPv4、IPv6

零内存拷贝

已通过测试

Windows
OSX
iOS
Android
Linux

建议开发环境

要发挥跨平台的完整功能请使用Delphi 10.2 Tokyo及以上的版本
最低要求支持泛型和匿名函数的Delphi版本, 具体是从哪个版本开始支持泛型和匿名函数的我也不是太清楚

已知问题

iOS做了初步测试, 连接数超过80以后还有些问题, 不过通常iOS下的应用谁会去开好几十 连接呢?

Android初步测试, 并发到450之后就无法增加了, 可能受限于系统的文件句柄数设置.

Ubuntu桌面版下似乎有内存泄漏 但是追查不到到底是哪部分代码造成的, 甚至无法确定是delphi内置的rtl库还是我所写的代码引起的. 通过 LeakCheck 库能粗略看出引起内存泄漏的是一个 AnsiString 变量, 并不能定位到具体的代码. 但是我自己的代码里根本没有任何地方定义或者使用过类似的变量, 其它Linux发行版本尚未测试.

盒子地址

http://bbs.2ccc.com/topic.asp?topicid=533321

Delphi Socket Demo的更多相关文章

  1. [转] Delphi Socket Architecture

    Delphi Socket Architecture - Felix John COLIBRI. abstract : The architecture of the ScktComp socket  ...

  2. Delphi Socket通信及多线程编程总结

    http://cxhblog.blog.sohu.com/41930676.html 一.Socket通信: Delphi在ScktComp单元中对WinSock进行了封装,该单元提供了TAbstra ...

  3. 初涉Delphi Socket编程

    不是第一次接触socket编程了,但以前都是看别人的依葫芦画瓢,也不知道具体的原理. 新的项目,有了新的开始,同时也需要有新的认识. Delphi 中带有两套TCP Socket组件: Indy So ...

  4. CommMonitor8.0 串口过滤驱动 SDK DLL版本 C#/Delphi调用DEMO

    CommMonitor8.0 SDK DLL 版本,此版本是直接调用DLL. Delphi调用定义: constCommMOnitor8x = ‘CommMOnitor8x.dll’; typeTOn ...

  5. 【网络编程】——linux socket demo

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/socket ...

  6. Delphi Socket 阻塞线程下为什么不触发OnRead和OnWrite事件

    //**********************************************************************************//说明: 阻塞线程下为什么不触 ...

  7. C socket demo

    一.服务端-server.c #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> # ...

  8. Delphi socket() 函数的应用

    socket()系统调用,带有三个参数: 1.参数domain指明通信域,如PF_UNIX(unix域),PF_INET(IPv4), PF_INET6(IPv6)等 2.type指明通信类型,最常用 ...

  9. delphi socket 编程 使用多线程

    http://blog.csdn.net/lailai186/article/details/8788710?utm_source=tuicool TClientSocket和TServerSocke ...

随机推荐

  1. linux 中ls命令函数

    #include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<dirent.h> ...

  2. map循环

    Map<String,  String> maps = new HashMap<String, String>(); maps.put("_id", &qu ...

  3. Oracle EBS-SQL (PO-10):检查过期采购未接收订单.sql

    Select pha.segment1               采购订单,            MSI.SEGMENT1             物料编码,           MSI.DESC ...

  4. QueryString和BASE64

    加号(+)是BASE64编码的一部分,而加号在QueryString中被当成是空格.因此,当一个含有BASE64编码的字符串直接作为URL的一部分时,如果其中含有加号,则使用QueryString读取 ...

  5. FLASH MAGIC LPC ISP下载方式说明

    硬件:EASYARM2131 开发板软件:FLASH MAGIC     下载地址:http://www.flashmagictool.com/程序:Demo2131.hex LPC的ISP下载方式, ...

  6. draw lines on ColumnChart

    原文 http://blog.csdn.net/lixuekun820/article/details/5485042 Summary: Adobe 的 Flex Chart提供了很强大的功能,通过简 ...

  7. 鼠标拖放div 实现

    Javascript的mousemove事件类型是一个实时响应的事件,当鼠标指针的位置发生变化时(至少移动1个像素),就会触发mousemove事件.该事件响应的灵敏度主要参考鼠标指针移动速度的快慢, ...

  8. linux svn服务器普通passwd和sasl2配置

    朋友昨天问我一个问题,他公司使用的vpn连接的svn,使用svn管理软件进行svn update是可行的,使用命令行svn update出错,svn status可行. 思路1: 刚开始我关注的焦点都 ...

  9. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  10. Gulp插件汇总

    HTML&CSS autoprefixer - parse CSS and add vendor prefixes to rules by Can I Use. gulp-browser-sy ...