Delphi Socket Demo
盒子中的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的更多相关文章
- [转] Delphi Socket Architecture
Delphi Socket Architecture - Felix John COLIBRI. abstract : The architecture of the ScktComp socket ...
- Delphi Socket通信及多线程编程总结
http://cxhblog.blog.sohu.com/41930676.html 一.Socket通信: Delphi在ScktComp单元中对WinSock进行了封装,该单元提供了TAbstra ...
- 初涉Delphi Socket编程
不是第一次接触socket编程了,但以前都是看别人的依葫芦画瓢,也不知道具体的原理. 新的项目,有了新的开始,同时也需要有新的认识. Delphi 中带有两套TCP Socket组件: Indy So ...
- CommMonitor8.0 串口过滤驱动 SDK DLL版本 C#/Delphi调用DEMO
CommMonitor8.0 SDK DLL 版本,此版本是直接调用DLL. Delphi调用定义: constCommMOnitor8x = ‘CommMOnitor8x.dll’; typeTOn ...
- 【网络编程】——linux socket demo
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/socket ...
- Delphi Socket 阻塞线程下为什么不触发OnRead和OnWrite事件
//**********************************************************************************//说明: 阻塞线程下为什么不触 ...
- C socket demo
一.服务端-server.c #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> # ...
- Delphi socket() 函数的应用
socket()系统调用,带有三个参数: 1.参数domain指明通信域,如PF_UNIX(unix域),PF_INET(IPv4), PF_INET6(IPv6)等 2.type指明通信类型,最常用 ...
- delphi socket 编程 使用多线程
http://blog.csdn.net/lailai186/article/details/8788710?utm_source=tuicool TClientSocket和TServerSocke ...
随机推荐
- 删除数组中等于某个key的所有元素
题目描述: 给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度. 这道题目做暴力的想法就是,用一个指针从头到尾遍历,删除哪个元素就把后面的元素统一向前移动一个位置.但是这样的时间复杂度很 ...
- 顺序表--MyArrayList的实现
实现的MyArrayList实为顺序表结构,其中要实现Iterable时必须在内部实现Iterator,即为该表的迭代器. public class MyArrayList<AntType> ...
- [Python]从豆瓣电影批量获取看过这部电影的用户列表
前言 由于之后要做一个实验,需要用到大量豆瓣用户的电影数据,因此想到了从豆瓣电影的“看过这部电影 的豆瓣成员”页面上来获取较为活跃的豆瓣电影用户. 链接分析 这是看过"模仿游戏"的 ...
- Struts2的Stack Context和ValueStack
1.提到Struts2的传值功能时,经常会见到Stack Context和ValueStack等概念,那么它们到底是什么,有什么作用呢. ValueStack(值栈):Struts2将OGNL上下文设 ...
- struct和class 区别
struct和class区别与联系 关于使用大括号初始化class和struct如果定义了构造函数的话,都不能用大括号进行初始化如果没有定义构造函数,struct可以用大括号初始化.如果没有定义构造函 ...
- C++ dynamic_cast实现原理
dynamic_cast是一个操作符,其用法不再赘述.查看汇编码可以发现实际调用的是这个函数__RTDynamicCast,其内部实现如下: rtti.h: #pragma once extern & ...
- MD5加密算法原理及实现
MD5消息摘要算法,属Hash算法一类.MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要. 以下所描述的消息长度.填充数据都以位(Bit)为单位,字节序为小端字节. 算法原理 1.数 ...
- uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)
Description In the ``Four Color Map Theorem" was proven with the assistance of a computer. This ...
- 安卓图片框架:universal-image-loader的高速使用
在安卓开发过程中难免会遇到下面几个情况: 1.图片异步载入 2.图片缓存 3.图片显示 4.其他--(忘记了) 以上的这些情况,可能要自己去写不少代码去实现这些功能.并且对于一些新手,可能写了半天,发 ...
- 2014百度之星第四题Labyrinth(DP)
Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...