
高性能大容量SOCKET并发
啥都得学呀
这个作者很懒,什么都没留下…
展开
-
高性能大容量SOCKET并发(四):粘包、分包、解包
粘包使用TCP长连接就会引入粘包的问题,粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。粘包可能由发送方造成,也可能由接收方造成。TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据,造成多个数据包的粘连。如果接收进程不及时接收数据,已收到的数据就放在系统接收缓冲区,用户进程读取数据时就可能同时读到多个数据包。粘转载 2012-09-10 10:08:13 · 1906 阅读 · 0 评论 -
高性能大容量SOCKET并发(一):IOCP完成端口例子介绍
例子主要包括IOCP控件封装、服务端实现、传输协议和日志、控制、SQL查询、上传、下载等协议实现,并包括一些初步的性能测试结果。服务端:界面截图如下:提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或卸载服务,在CMD中输入D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -install来注册服务,在CMD输入D:\DE转载 2012-09-10 09:48:14 · 1513 阅读 · 1 评论 -
高性能大容量SOCKET并发(三):接收、发送、缓存
接收完成端口是结合重叠端口一起使用的,在接收数据之前,我们需要投递一个接收请求,使用function WSARecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompl转载 2012-09-10 10:07:15 · 2929 阅读 · 0 评论 -
高性能大容量SOCKET并发(五):锁和对象分离 .
锁和对象一起封装的危险在多线程编写中,绝大多数编码风格喜欢把锁和要访问的对象封装在同一个对象,释放对象的时候也释放锁,这样会造成死锁。我们写一个测试例子,我们创建一个锁,把锁锁住,然后再创建一个线程,一直不停的等待锁返回,然后我们把锁释放,这时线程就死锁,代码如下:定义接口:[delphi] view plaincopyprint?type TLo转载 2012-09-20 16:28:12 · 737 阅读 · 1 评论