12 2009 档案
摘要:首先搜索了一下论坛里关于send时产生WSAEWOULDBLOCK时的处理办法,得出如下结论: 1.产生这个错误只是说明out buffer已经满了,不代表出错. 2.可以等待FD_WRITE消息,此时将没有发送完成的数据再次发送出去. 但还是有疑问,我的问题如下: 1.我上面的两条结论正确吗? 2.关于在FD_WRITE里把没有发送完的数据发送完,这一点如何做到呢?因为 int nSended ...
阅读全文
摘要:AttachToProcess('Explorer.Exe', 'MyDll.Dll' );//查找指定的进程,然后返回进程IDprocedure FindAProcess(const AFilename:string; const PathMatch:Boolean; var ProcessID: DWORD);//AFilename为要查找(进程ID)的文件名(可以包行路径)//PathMat...
阅读全文
摘要:组播使用在internet上面并不是一个好办法,很多的路由器是不支持组播的(以前华为的路由器也不支持,现在不知道),就算现在有路由器支持,你也没有办法保证你的包所经过的路由都是支持组播协议的. 我觉得在WINDOWS下面还是使用TCP(或者UDP的PTOP)的IOCP模型的通用性好一些.至少不用担心你说的问题. 下面的是一段组播程序: unit UdpSocket; interface uses ...
阅读全文
摘要:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--unittheadTest;interfaceusesWindows,Classes;typeMyThread=classprivateFHandle:THandle;FSuspended:Bool...
阅读全文
摘要:1 进程和线程的区别 进程: 进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间 线程: 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量2 标准 线程函数 DWORD WINAPI ThreadFunc(PVOID pvParam){ DWORD dwResult ...
阅读全文
摘要:TList 源码分析TPointerList = array[0..MaxListSize - 1] of Pointer;TList 的本质就是个无类型指针的数组TList = class(TObject) private FList: PPointerList; FCount: Integer; FCapacity: Integer; protected function Get(Index:...
阅读全文
摘要:idUdpserve -----------------TIdBaseComponent // 主要保存版本号信息TIdComponent(建立一个纯虚类TIdStack对象, 获取本机机器名), 另外操作一个结构体WORK数组TIdUDPBase TIdUDPServer 建立一个TIdSocketHandles对象,主要是由用户输入IP,端口号.里边的主要是一个读数据包操作,OnUDPRead...
阅读全文
摘要:减少丢包率1、每个UDP包的体积小,小于460个字节,减少分片,从一定程度上可以减少丢包2、提高接受缓冲区的大小,把接受缓冲设为10K以上3、采用一问一答,每个包编号,自己采用一套机制,但是这样就太复杂,也是QQ比MSN慢的原因
阅读全文