2013年1月6日
摘要: 一般创建套接字都是创建的阻塞模式,阻塞模式情况下,要处理多个套接字的连接,就必须创建多个线程的连接,即一个典型的连接用一个线程。通过调用函数方法ioctlsocket,可以从阻塞模式变为非阻塞模式,u_long ul=1;SOCKET s=SOCKET(AF_INET,SOCKET_STREAM,0);ioctlsocket(s,FIONBIO,(u_long*)&ul);一旦套接字被设置于非阻塞模式,处理发送和接收数据或者管理连接的winsock调用将会立即返回,大多数情况下,调用失败的出错代码是WSAEWOULDBLOCK,一位着请求操作在调用期间没有完成。如果去确定网络事件何时发 阅读全文
posted @ 2013-01-06 14:47 RedLight 阅读(1811) 评论(0) 推荐(0) 编辑
摘要: WSAAsyncSelect模型允许以windows消息作为网络事件的通知,这个模型是为了windows消息专门而设置的。这个函数默认使socket为非阻塞模式(一般情况下,异步模式便为非阻塞模式)。当WSAAsyncSelect函数进行调用了以后,就可以在在窗口函数以windows消息的形式接收网络事件通知。LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)是对应的回调函数。USHORT nPort=4567;SOCKET sListen=::socket(AF_INET,SOCK_STRE 阅读全文
posted @ 2013-01-06 14:25 RedLight 阅读(904) 评论(0) 推荐(0) 编辑
  2012年12月20日
摘要: 阅读全文
posted @ 2012-12-20 20:21 RedLight 阅读(338) 评论(0) 推荐(0) 编辑
  2012年12月18日
摘要: #include <stdio.h>#pragma pack(push,1)struct A{ unsigned char b; unsigned long a[3];};#pragma pack(push)int main(){ A m; m.a[0]=0xAABB; m.a[1]=0xCCDD; m.a[2]=0xEEFF; m.b='Z'; int sizes=sizeof(m); //把结构体转化成char* char* change=(char*)&m; // 把char* 转换成结构体 A* bb=(A*)(&(*change)); pr 阅读全文
posted @ 2012-12-18 13:37 RedLight 阅读(178) 评论(0) 推荐(0) 编辑
  2012年12月14日
摘要: 感情谁也摸不透,自己到底能够称多久,对方又能称多久。我要当一个强者,去改变自己。 阅读全文
posted @ 2012-12-14 21:28 RedLight 阅读(153) 评论(0) 推荐(0) 编辑
  2012年12月11日
摘要: 自己按照openssl中介绍的编译,安装openssl,其间编译并不是很顺利。首先是关于在x64上进行编译,问题一大堆,并且在x64编译安装文档中介绍的很简单,细节没有介绍,自己决定按照x86上的方法进行编译。才开始出现了link error,重新解压压缩包后重新编译就成功了。在编译过程中并没有使用nasm,而是直接使用vc command prompt命令namke,最后编译并且安装成功。安装成功后,有专门的目录存放openssl的库,bin中有dll,lib下有对应的lib文件,在项目只需要配置一下环境就可以进行了。 最后遇见了一个错误OPENSSL_Uplink(6219B0... 阅读全文
posted @ 2012-12-11 16:41 RedLight 阅读(5750) 评论(1) 推荐(0) 编辑
摘要: SRP6协议介绍 author by 张红亮 最近在公司里面看Mangos服务器,Mangos服务器登陆验证模块使用了SRP6协议,也就研究了一下SRP协议,最后自己总结了一下具体的SRP6协议验证过程。 这个协议算法自己写或许要写上一两个月时间,我自己在想能否用现有的库开发,密码安全库有有名的openssl库,发现新版本的openssl库里面有SRP6的具体实现,自己编译了一下openssl,自己电脑是x64,但编译出错,直接按照32bit非nasm下进行编译,编译通过后,运行srptest.exe为: 就可以根据openssl中进行服务器的验证登陆了 阅读全文
posted @ 2012-12-11 12:00 RedLight 阅读(4225) 评论(0) 推荐(0) 编辑
  2012年12月5日
摘要: d 阅读全文
posted @ 2012-12-05 16:33 RedLight 阅读(316) 评论(0) 推荐(0) 编辑
摘要: #include<Windows.h>#include <iostream>#include <queue>using namespace std;typedef struct BinTNode { int data; BinTNode* lBinTNode; BinTNode* rBinTNode;}BinTNode,* BinTree;//BinTNode是定义的类型,而*BinTree是定义指向此结构体的指针int initArray[]={6,4,10,5,0,0,0,8,0,0,12,16,0,0,14,0,0};int i=0;void Crea 阅读全文
posted @ 2012-12-05 15:42 RedLight 阅读(193) 评论(0) 推荐(0) 编辑