摘要: function sendarp(ipaddr:ulong;temp:dword;ulmacaddr:pointer;ulmacaddrleng:pointer) : Dword; StdCall; External 'Iphlpapi.dll' Name 'SendARP';function GetMACByIP(const Ip:string):string;var MyIp:ulong; MyMac:array[0..5] of byte; MyMacLength:ulong; ErrCode:integer;begin Myip:=inet_addr(P 阅读全文
posted @ 2012-09-20 14:49 马儿快跑 阅读(986) 评论(0) 推荐(0) 编辑
摘要: 一直很烦恼delphi附带的socket控件都不能满足我的设计逻辑需要,无奈只好自己动手封装了API,并且得到实践的证明(至少有两个服务器能稳定运行至今),本socket组件的多线程机制是安全的稳定的。 在服务器端,创建线程池,对于每个客户连接对应一个独立的线程类,可以在线程内处理客户数据,并可以线程间采用同步机制交换数据,为通讯服务器的建立提供了技术实现的基础。 U版本的经过了缺陷优化,虽然仅是经过了测试也还没有得到实践运行,但从以往成熟的结构演变而来的,问题应该不大!附socket组件及相关单元源码:{*******************************************. 阅读全文
posted @ 2012-09-20 14:07 马儿快跑 阅读(2748) 评论(0) 推荐(0) 编辑
摘要: Delphi 中的MD5实现方法及delphi2009和delphi2010中用法在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。 在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。 示例代码 procedure TForm1.Button1Click(Sender: TObject); var MyMD5: TIdHashMessageDigest5; Digest: T4x4LongWordR 阅读全文
posted @ 2012-09-20 10:33 马儿快跑 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 设置myeclipse中.properties文件的编码方式打开myeclipse的: Window ->Perferences ->General ->Editors ->Context Types 或者: Window ->Perferences ->General ->Context Types 展开右边的Text节点,选中Java Properties File。把下面的Default Character Set的值:ISO-8859-1改成UTF-8 或者你希望的字符编码类型,然后点击update按钮.最后确定.MyEclipse实用操作之屏 阅读全文
posted @ 2012-09-20 09:00 马儿快跑 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 高性能的socket通讯IOCP服务器源码 很多人费尽心思,都没有找到一个完美的 I/O CP 例程,甚至跟人于误解,先将本人编写的例程公布出来,希望对那些苦苦寻觅的人带来收获。本例程可以作为初学者的学习之用,亦可以作为大型服务程序的通讯模块。其处理速度可以说,优化到了极点。如果理解了本例程的精髓,加上一个高效的通讯协议,你完全可以用它来构建一个高性能的通讯服务器。 在公布代码前,先谈谈I/O CP。对I/O CP的函数不多做说明了,网上很多,都一样。在此本人仅说一些技术上要注意的问题。 一、如何管理内存 1、IO数据缓冲管理 动态分配内存,是一种灵活的方式。但对于系统资源浪费是巨大... 阅读全文
posted @ 2012-09-20 08:59 马儿快跑 阅读(2557) 评论(0) 推荐(0) 编辑
摘要: WinSock学习笔记6:IOCP完成端口模型Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unitUnit1;interfaceusesWinSock2,Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls;type//单IO数据结构LPER_IO_OPERATION_DATA=^TPER_IO_OPERAT 阅读全文
posted @ 2012-09-20 08:56 马儿快跑 阅读(571) 评论(0) 推荐(0) 编辑
摘要: WinSock学习笔记4:WSAEventSelect模型WSAEventSelect类似于WSAAsycnSelect,区别就是当Socket上有“事件”时,传递一个Event而不是Windows消息。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unitUnit1;interfaceusesWinSock2,Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Form 阅读全文
posted @ 2012-09-20 08:54 马儿快跑 阅读(534) 评论(0) 推荐(0) 编辑
摘要: Winsock学习笔记5:I/O Overlapped (重叠)模式Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unitUnit1;interfaceusesWinSock2,Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls;typeTWorkThread=class(TThread)privateFMe 阅读全文
posted @ 2012-09-20 08:54 马儿快跑 阅读(311) 评论(0) 推荐(0) 编辑
摘要: WinSock学习笔记3:Select模型Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,WinSock,ExtCtrls;typeTWorkThread=class(TThread)privateFClientSocket:TSo 阅读全文
posted @ 2012-09-20 08:53 马儿快跑 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->varWSData:WSAData;ServerSocket:TSocket;ClientSocket:TSocket;LocalAddr:TSockAddrIn;ClientSocketAddr:TSockAddrIn;ClientSocketAddrLen:Integer;SocketMode:Integer;begin//初始化WinsockWSAStartUp($202,WSDat 阅读全文
posted @ 2012-09-20 08:52 马儿快跑 阅读(651) 评论(0) 推荐(0) 编辑
摘要: Winsock学习笔记2:WSAAsyncSelect模型共有五种类型的套接字I/O模型,可让Winsock应用程序对I/O进行管理,它们包括: select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件选择)、overlapped(重叠)以及 completion port(完成端口)。WSAAsyncSelect(异步选择)是最简单也最好理解的模式,因为用这个模式你都不需要明白多线程的编程知识~ 话不多说,先上代码(下面的代码不包含异常处理,仅为学习使用):Code highlighting produced by Actipro CodeHigh. 阅读全文
posted @ 2012-09-20 08:51 马儿快跑 阅读(484) 评论(0) 推荐(0) 编辑
摘要: (** 单元说明: 文件/流的加密解密方法(For Delphi 6-7)** 软件来源: http://www.go-neumann.com/* http://www.inbytes.net/** 作 者: neumann@163.com** 使用说明: 此文件的代码可以直接编译使用,* 您可以根据需要编写自己的加密/解密代码.** 声 明: 以下代码属作者原创, 请转载时保留本信息. **)unit uCompress;interfaceusesWindows, Messages, SysUtils, Variants, Classes, ComCtrls, Dialogs;/... 阅读全文
posted @ 2012-09-20 08:50 马儿快跑 阅读(1342) 评论(0) 推荐(0) 编辑
摘要: IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销比较大,所以造成了效率的低下。 调用的步骤如下: 抽象出一个完成端口大概的处理流程: 1:创建一个完成端口。 2:创建一个线程A。 3:A线程循环调用GetQueuedCompletionStatus 阅读全文
posted @ 2012-09-20 08:49 马儿快跑 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 基于Delphi的Socket I/O模型全接触老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型。 一:select模型 老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信,在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。 select模型和老陈的这种情况非常相似:周而复始地去检查......如果有数据......接收/发送....... 使用线程来selec... 阅读全文
posted @ 2012-09-20 08:48 马儿快跑 阅读(648) 评论(0) 推荐(0) 编辑