- 博客(13)
- 资源 (8)
- 收藏
- 关注
原创 VS2017编译jemalloc_win32_3.31
一、配置环境变量1.includeD:\Tools\Visual Studio 2017 Enterprise\VC\Tools\MSVC\14.10.25017\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt\;D:\Tools\Microsoft Visual Studio 6\VC98\Incl...
2018-04-22 02:38:47
1363
原创 WSARecv在完成端口中的线程关联性
发起WSARecv,WSASend,AcceptEx的线程在请求未完成前退出(也就是GetQueuedCompletionStatus还没返回的情况下退出),则请求取消,错误码995。 错误995很常见,请求未完成时,socket被关闭也是这个错误号,但由于请求发起线程退出而导致的995错误却很少见。一般server端都是在accept或acceptex返回之后投递第一个WSARec...
2018-04-11 19:50:46
1153
原创 IOCP应用中,有关内存释放的几个需要注意的地方
写文章最主要目的是备忘,以免一些好不容易想通的问题,被人体新陈代谢给清理出大脑,最后忘得一干二净,要是平常没个记录的好习惯会很心累。只不过再充分的准备,再自信满满,再运筹帷幄,也敌不过世事无常。昨天,我严格按照卸载的标准流程删除软件,没想到竟然把我D:\tools文件夹给整个端掉了,以前的记录文档,全没了。更苦的是,我并没有立即发现,而是又往D盘装了若干东西之后
2017-05-11 19:25:30
1782
原创 有关recv端数据流分割问题的一点思考
不管阻塞接收还是异步接收,总是绕不开数据流的分割问题。然而不知道什么原因,网上竟然很难找到现成、合用的代码,也许这种问题不值得付诸于代码,或者不太容易写出普遍通用的代码吧,但不论如何,轮到自己,个人觉得还是应该细致的做个总结。抛开一些复杂因素,有助于清晰思路,更容易找到解决问题的办法,所以决定从最简单、也相当富有代表性的阻塞套接字开始研究,省略掉一些对所涉问题关系不是很大的代码,保留关
2017-05-04 16:53:20
846
原创 IOCP5: shutdown,WSASendDisconnect,DisconnectEx
1.::shutdown(s,SD_SEND);表示禁止本地再发送数据到对端,并且,请求对方断开,如果对方不断开,本地套接字将处于FIN_WAIT_2状态,异步等待一段时间,时间到了之后,本地将主动断开连接,GetQueuedCompletionStatus将会返回,WSASend,WSARecv等函数的调用也都将失败,但socket资源并没有回收,仍需调用closesocket来释放套接字占
2013-02-01 07:02:14
2741
原创 保存一些下载地址
WindowsServer2003_SP1_SDK下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=15656
2013-01-31 21:31:50
665
原创 WSASend重叠post数据
开门见山,直接就事论事。 假如有这么一个基于IOCP模型的Server,这个Server提供的所有服务中有这么一种服务……文件下载,我们再假设Server端存有一个20G的文件,客户端这时发送一个请求到服务端来,客户端要求下载这个20G的文件,由此可能引发一系列让人头疼的问题(不谈TransmitFile,我们谈WSASend) 先给出一段伪代码,这段代码肯定是有问题的,如下:
2013-01-24 20:44:28
5261
原创 系统控制 屏蔽任务管理器
其实很简单,找到任务管理在系统目录的位置,调用CreateFile函数独占打开。 BOOL TaskManager_Hide(char *pszPath){ g_hTaskManager=::CreateFile(pszPath,GENERIC_READ,0,0,OPEN_EXISTING,0,NULL); if(g_hTaskManager==INVALID_HANDLE_V
2013-01-13 17:30:53
1106
原创 将 tcc 载入工程 编译脚本
tiny cc 编译器tcc是一个支持windows和linux环境的C语言编译器。它也可以将代码编译之后直接嵌入到进程中,这就具有脚本的相关特性了,但它却不是解释执行的。 tcc将C源码编译称机器码,然后分配一块内存,将机器码写在这块内存中,宿主进程可以调用源码中所定义的函数,源码也可以调用宿主进程提供的函数,交互还是相当灵活的。 我们可以将tcc源码编译称DLL(就直接
2013-01-13 17:19:59
5670
原创 class中封装回调函数 显式传递this指针
本文是用来凑数而已。因为本人实在讨厌某个数字,巧的是,本人在优快云博客上发表的文章数量正好是某个数字,于是加一篇。 1.最简单的就是CreateThread#if !defined(AFX_TTHREAD_H__7222F1CA_7289_41A3_98A3_431B6044B3AE__INCLUDED_)#define AFX_TTHREAD_H__7222F1CA_7289_
2013-01-13 16:44:19
2486
1
原创 windows内存池 一线程分配 一线程释放 无锁 安全?
lock-free这种东西,我只要想想就能感到其复杂程度超出我的想象,但是呢,它又的的确确是好东西,于是就起了收集一套源码的念头(估计多数伸手党也就是这么产生的),还算幸运,找到一个库,简单测试一下,各种lock-free,各种高效。 好吧,打住,今天主打内存池。 写内存池的想法来自优快云的一位博主,他的一篇文章:一度一写情况下,无锁队列如何实现,直接贴上链接:http://bl
2013-01-12 19:12:34
1579
原创 日志,IOCP中一些应该注意的小细节
1.OVERLAPPED结构需要在绑定时初始化一次,填充为02.在工作线程中调用printf会出现打印两次的情况,这个不算问题,主要是因为工程的C运行时库不是多线程版本,将工程设置为支持Multithreaded就行了。3.套接字资源回收的问题。对方如果断开了连接,也关闭了套接字,本地也检测到对方关闭了连接,但这并不意味着套接字资源已经释放掉了,还必须调用closesocket才能释放连接
2012-05-04 02:33:05
1239
转载 24,16,8,4位位图之间相互转换
//24,16,8,4位位图之间相互转换//lpDest:颜色数据,目标图//lpSrc:颜色数据,源图//dbits:目标颜色数//sbits:源颜色数//w:宽度//h:高度void ConvBitCount(BYTE *lpDest, BYTE *lpSrc, UINT dbits, UINT sbits, UINT w, UINT h){ BITM
2011-06-22 10:08:00
3638
服务器测试小工具
2018-04-20
服务器压力测试小工具
2013-02-08
iocp服务器客户端混合框架
2013-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人