DELPHI中完成端口(IOCP)的简单分析(4)   在我以前写的文章中,一直说的是如何接收数据.但是对于如何发送数据却一点也没有提到.因为从代码量上来说接收的代码要比发送多很多.今天我就来写一下如何使用IOCP发送数据.   function TNetControl.SendSpecifyData(const Socket: TSocket; Data: array of char;  DataLen: Integer): Boolean;   const     DATA_BUFSIZE…
DELPHI中完成端口(IOCP)的简单分析(3)   fxh7622关注4人评论7366人阅读2007-01-17 11:18:24   最近太忙,所以没有机会来写IOCP的后续文章.今天好不容易有了时间来写IOCP的粘包处理问题. TCP数据粘包的产生原因在于TCP是一种流协议.在以太网中一个TCP的数据包长度是1500位.其中20位的IP包头,20位的TCP包头,其余的1460都是我们可以发送的数据.在数据发送的时候,我们发送的数据长度有可能比1460短,这样在TCP来说它还是以一个数据包…
DELPHI中完成端口(IOCP)的简单分析(2)   今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西.希望各位能提出批评意见.上次我写了关于常见IOCP的代码,对于IOCP来说,接受到客户端发送过来和自己发送出去的数据都是从工作者线程中得到.代码和解释如下:function ServerWorkerThread(CompletionPortID:Pointer):Integer;stdcall;begin   CompletionPort:=THANDLE(Compl…
DELPHI中完成端口(IOCP)的简单分析(1)   用DELPHI开发网络代码已经有一段时间了! 我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了.对IOCP讲的清楚的就更少了.在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助. 首先我们来了解一些在使用IOCP的时候需要使用的一些结构! (1):单IO数据结构   LPVOID = Pointer;  LPPER_IO_OPERATION_DATA = ^ PE…
java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 //创建一个File 对象,检验文件是否存在,若不存在就创建然后对File package wfu; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.Scanner; pu…
rocketmq中的NettyRemotingClient类的简单分析 Bootstrap handler = this.bootstrap.group(this.eventLoopGroupWorker).channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true) .option(ChannelOption.SO_KEEPALIVE, false) .option(ChannelOption.CONNECT_…
Androidapi.JNIBridge负责和JNI交互.,既然要交互,那么首先就是需要获得JNI的运行环境,Android本身内置的就有一个Java(Dalvik)虚拟机.所以这个第一步就肯定是要这个虚拟机和我们当前的运行线程环境关联.这时候Androidapi.JNIBridge中的TJNIResolver就出场了.GetJNIEnv这个函数就是, class function TJNIResolver.GetJNIEnv: PJNIEnv; var PActivity: PANativeA…
http://bbs.csdn.net/topics/390513469/ unit uThread; interface uses Classes; type Th = class(TThread) private { Private declarations } protected procedure Execute; override; end; 以上是创建的一个多线程 我在另外一个单元里Unit1有一个函数 function Myfun(username,password:string)…
第一步:在要实现快捷键的窗体中更改属性“KeyPreview”为True:第二步:在要实现快捷键的窗体中的OnKeyPress事件中填入一个过程名称(在Object Inspector中),填写好后回车就可转入事件代码填写部分:第三步:填写事件处理过程,下面给出一个例子:procedure TFrmMain.KeyPress(Sender: TObject; var Key: Char);beginif key in [' '] then  begin    B_Play_Pause.Click…
1.行内样式操作 目标:扩展框架实现行内样式的增删改查 1.1 创建 css 方法 目标:实现单个样式或者多个样式的操作 1.1.1 css方法 -获取样式 注意:使用 style 属性只能获取行内样式 解释:获取类或者外部样式文件中设置的样式要使用 W3C规范:window.getComputedStyle(dom) IE中 :dom.currentStyle itcast.fn.extend({ css: function(name, value) { return window.getCo…