上一页 1 ··· 144 145 146 147 148 149 150 151 152 ··· 204 下一页
摘要: 如果通讯协议使用TCP/IP,客户端同中间件之间的SOCKET连接是非常有讲究的。应该视应用场合巧妙地使用短连接搭配长连接的方式。纯粹地使用长连接或者纯粹地使用短连接,往往不大合理。如果长时间让一个SOCKET长连接休闲,这无疑是对中间件资源的浪费,如果这种休闲的长连接数量非常多,可能会影响中间件的性能。光靠中间件通过发心跳包自动断开长时间休闲的连接,其实这是中间件对此类事件的最后一道防线。如果远程方程都做成短连接,也不大好,例如一些远程方法成块地执行,如果执行一个远程方法先同中间件建立SOCKET连接,执行完以后立即断开连接,这样就不好。因为建立SOCKET连接比较地耗时,一些远程方法成块地 阅读全文
posted @ 2013-01-10 21:08 delphi中间件 阅读(3850) 评论(1) 推荐(0)
摘要: type TOutBufPassThrough = record // 用于USB接口打印机开钱箱 // 调用windows.extEscape可以直接用extEscape(handle, PASSTHROUGH, sizeOf(outBuf), @outBuf, 0, nil)向设备发送esc命令 阅读全文
posted @ 2013-01-05 17:38 delphi中间件 阅读(1094) 评论(0) 推荐(0)
摘要: 客户端登录的时候,自动同中间件校对时间。procedure TdmCommonFun.setLocalDateTime(Value: TDateTime);var lSystemDateTime: TSystemTime;begin DateTimeToSystemTime(Value, lSystemDateTime); SetLocalTime(lSystemDateTime);end; 阅读全文
posted @ 2013-01-05 17:36 delphi中间件 阅读(646) 评论(0) 推荐(0)
摘要: function TdmCommonFun.GetIdeSerialNumber: AnsiString; stdcall;const IDENTIFY_BUFFER_SIZE = 512;type TIDERegs = packed record bFeaturesReg: Byte; // Used for specifying SMART "commands". bSectorCountReg: Byte; // IDE sector count register bSectorNumberReg: Byte; // IDE sector number registe 阅读全文
posted @ 2013-01-05 17:35 delphi中间件 阅读(897) 评论(0) 推荐(0)
摘要: procedure TFrmMain.btnUpdateFilesClick(Sender: TObject);begin try if Assigned(gEXEmm) then FreeAndNil(gEXEmm); if Assigned(gINImm) then FreeAndNil(gIN 阅读全文
posted @ 2012-12-29 22:24 delphi中间件 阅读(818) 评论(0) 推荐(0)
摘要: DataSnap可以直接传递和返回TStream类型的参数,这点是很方便的。但是很多人发现好像大小稍微大点就工作不正常了。DataSnap默认的缓存大小是32k 所以如果流的大小超过这个大小就会被自动分成多个包,这就是传递大量数据的基础,如果一次性发送就可能受到内存的限制。当传递大量数据时获取到的大小是-1,所以如果还是按照一般的方法来读取流的数据就会有问题了。由于流的数据是原始数据包发送,所以在不对数据包压缩加密的情况下,传递速度是和其它方式没有多大区别的。0102030405060708091011121314151617181920212223// FS是一个文件流function TM 阅读全文
posted @ 2012-11-23 21:48 delphi中间件 阅读(2175) 评论(0) 推荐(1)
摘要: unit untDMPool;interfaceuses Classes, SyncObjs, SysUtils, DateUtils, untData;type PServerObject = ^TServerObject; TServerObject = record ServerObject: TdmData; InUse: Boolean; end; TDMPool = class private FCriticalSection: TCriticalSection; FServerObjects: TList; FPoolSize: int... 阅读全文
posted @ 2012-11-23 20:58 delphi中间件 阅读(562) 评论(0) 推荐(1)
摘要: procedure TForm1.Button1Click(Sender: TObject);var s, b: AnsiString; a: array[0..9] of Byte;begin s := 'test'; FillChar(a, SizeOf(a), ''); Move(s[1], a, SizeOf(a)); SetLength(b, SizeOf(a) + 1); Move(a, b[1], SizeOf(a)); Caption := b;end; 阅读全文
posted @ 2012-11-15 21:39 delphi中间件 阅读(447) 评论(0) 推荐(0)
摘要: // 移动短信接口(cmpp 2.0)//unit untYiDongInterface;interfaceusesSysUtils, untSocket, IdGlobal, MessageDigest_5, Types;const{$REGION 'Command_Id定义'}CMPP_CONNECT = $00000001; // 请求连接CMPP_CONNECT_RESP = $80000001; // 请求连接应答CMPP_TERMINATE = $00000002; // 终止连接CMPP_TERMINATE_RESP = $80000002; // 终止连接应答C 阅读全文
posted @ 2012-11-15 19:18 delphi中间件 阅读(4105) 评论(0) 推荐(0)
摘要: 对于一些小文件,用普通的文件流就可以很好的解决,可是对于超大文件,比如2G或者更多,文件流就不行了,所以要使用API的内存映射的相关方法,即使是内存映射,也不能一次映射全部文件的大小,所以必须采取分块映射,每次处理一小部分。先来看几个函数CreateFile :打开文件GetFileSize : 获取文件尺寸CreateFileMapping :创建映射MapViewOfFile :映射文件看MapViewOfFile的帮助,他的最后两个参数都需要是页面粒度的整数倍,一般机器的页面粒度为64k(65536字节),而我们实际操作中,一般都不是这样规矩的,任意位置,任意长度都是可能的,所以就要做一 阅读全文
posted @ 2012-11-04 08:23 delphi中间件 阅读(853) 评论(0) 推荐(0)
上一页 1 ··· 144 145 146 147 148 149 150 151 152 ··· 204 下一页