
每天遇到问题解决方案
三只小熊66
本人只弄技术
展开
-
网狐棋牌游戏平台服务器架构设计分析
基本设计概念和处理流程 调用模型模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。示意图: 基于事件驱动的数据处理转载 2017-10-08 18:41:31 · 532 阅读 · 0 评论 -
extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
前面的extern "C" __declspec(dllexport) __declspec(dllimport)都是用于函数或者变量,甚至类的声明的(可以把extern "C"放在class的前面,但是编译器会忽略掉,最后产生的还是C++修饰符,而不是C修饰符)这样的用法有个好处就是下面的代码可以在混有类的函数和变量上使用下面的宏,虽然对类不起作用:#ifdef __cplusp转载 2017-09-20 20:44:31 · 571 阅读 · 0 评论 -
关于Socket创建失败,10093
问题:创建套接字时发现10093错误。问题描述:Failed to create UDP socket:10093!Close and restart app.解决方案:在InitInstance()中初始化网络WSADATA wsaData;int nRet;if((nRet = WSAStartup(MAKEWORD(2,2),&wsaData)) != 0){TRAC转载 2017-09-19 16:51:36 · 4317 阅读 · 1 评论 -
网络IO模型
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2017-09-19 10:19:15 · 474 阅读 · 0 评论 -
非阻塞connect,错误码:EINPROGRESS
当我们以非阻塞的方式来进行连接的时候,返回的结果如果是 -1,这并不代表这次连接发生了错误,如果它的返回结果是 EINPROGRESS,那么就代表连接还在进行中。 后面可以通过poll或者select来判断socket是否可写,如果可以写,说明连接完成了。转载 2017-09-18 14:14:00 · 789 阅读 · 0 评论 -
创建线程后为什么马上调用CloseHandle()来关闭句柄
hThread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &dwThreadId);CloseHandle(hThread);如上面这样的代码,原因为:创建线程后返回了线程句柄,新创建的线程内核对象的使用计数是2,一个是线程本身,一个是创建线程的线程,创建线程的线程closehandle后,新的线程的内核对象使用计数为1,当这个新线转载 2017-09-15 19:53:41 · 405 阅读 · 0 评论