08 2014 档案

c++文件操作
摘要:c++中的文件操作中,向文件中间写数据时,只是将原来文件中的数据位覆盖,并不能向文件的数据位中间插值。c++的文件一行的结尾处是\r\n 阅读全文
posted @ 2014-08-19 21:36 冰花ぃ雪魄 阅读(99) 评论(0) 推荐(0) 编辑
F - Coins
摘要:F - Coins Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1742Description People in Silverland use coin... 阅读全文
posted @ 2014-08-17 21:31 冰花ぃ雪魄 阅读(235) 评论(0) 推荐(0) 编辑
F - Coins
摘要:F - Coins Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription People in Silverland use coins.They have coins ... 阅读全文
posted @ 2014-08-16 20:50 冰花ぃ雪魄 阅读(120) 评论(0) 推荐(0) 编辑
K - 最少拦截系统
摘要:Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不 能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么... 阅读全文
posted @ 2014-08-16 16:59 冰花ぃ雪魄 阅读(201) 评论(0) 推荐(0) 编辑
CFileDialog的用法
摘要:CFileDialog 在MSDN中的函数原形CFileDialog::CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDERE... 阅读全文
posted @ 2014-08-16 16:08 冰花ぃ雪魄 阅读(244) 评论(0) 推荐(0) 编辑
MFC编辑框换行实现
摘要:MFC中换行实现在mfc中编辑框允许输入多行时,换行符被表示为即“\r\n”,用ascii码表示为13 10如果为编辑框中想要输入换行,就请将编辑框的属性:Auto HScroll 设置为 FalseMultiLine 设置为 TrueWant Return 设置为 Truetxt文本框中的换行实现... 阅读全文
posted @ 2014-08-15 21:05 冰花ぃ雪魄 阅读(1072) 评论(0) 推荐(1) 编辑
MFC通过对话框窗口句柄获得对话框对象指针
摘要:C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //由句柄得到对话框的对象指针 pWnd->xxx( ); //调用C***Dialog中的函数xxx();通过窗口类函数:CWnd *GetWindow获得窗口指针,pWnd->m_hWnd(Th... 阅读全文
posted @ 2014-08-14 21:06 冰花ぃ雪魄 阅读(1494) 评论(0) 推荐(0) 编辑
AfxGetMainWnd()函数用法
摘要:CWnd* AfxGetMainWnd( ); 使用AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法。就是获得应用程序主窗口的指针,AfxGetMainWnd()-> m_hWnd是主窗口的句柄。 阅读全文
posted @ 2014-08-14 20:58 冰花ぃ雪魄 阅读(1554) 评论(0) 推荐(1) 编辑
this指针和m_hWnd的区别
摘要:m_hWnd①m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员,先看一下MSDN的解析:ThehandleoftheWindowswindowattachedtothisCWnd.Them_hWnddatamemberisapublicvariableoftype... 阅读全文
posted @ 2014-08-14 20:57 冰花ぃ雪魄 阅读(465) 评论(0) 推荐(0) 编辑
WinAPI: FindWindow、FindWindowEx - 查找窗口
摘要:FindWindow( lpClassName, {窗口的类名} lpWindowName: PChar {窗口的标题}): HWND; {返回窗口的句柄; 失败返回 0}//FindWindowEx 比 FindWindow 多出两个句柄参数:FindWindowEx( Pare... 阅读全文
posted @ 2014-08-14 20:53 冰花ぃ雪魄 阅读(732) 评论(0) 推荐(0) 编辑
VC 各种情况下的窗口句柄的获取
摘要:动窗口的句柄。否则,返回值为NULL。GetSafeHwnd函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。通过下面的例子来看其理由: CWnd *pwnd = FindWindow(“ExploreWClass”,NUL... 阅读全文
posted @ 2014-08-14 20:42 冰花ぃ雪魄 阅读(258) 评论(0) 推荐(0) 编辑
cout 格式化输出
摘要:将 cout 的 flag 保存到变量, 以便修改后的恢复 ostream::fmtflags old = cout.flag() ; // 无参将返回当前 flag 值 cout.flag(old) ; // 恢复到原... 阅读全文
posted @ 2014-08-13 15:08 冰花ぃ雪魄 阅读(274) 评论(0) 推荐(0) 编辑
CreateEvent的用法
摘要:事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下:HANDLE CreateEv... 阅读全文
posted @ 2014-08-12 10:48 冰花ぃ雪魄 阅读(207) 评论(0) 推荐(0) 编辑
深入理解CRITICAL_SECTION
摘要:临界区是一种防止多个线程同时执行一个特定代码节的机制,这一主题并没有引起太多关注,因而人们未能对其深刻理解。在需要跟踪代码中的多线程处理的性能时,对 Windows 中临界区的深刻理解非常有用。本文深入研究临界区的原理,以揭示在查找死锁和确认性能问题过程中的有用信息。它还包含一个便利的实用工具程序,... 阅读全文
posted @ 2014-08-12 10:19 冰花ぃ雪魄 阅读(269) 评论(0) 推荐(0) 编辑
const型类成员
摘要:一、关于const类成员函数有以下几个需要注意的地方:1. 在普通的非const成员函数中,this的类型是一个指向类类型的const指针,而const成员函数中,this的类型是一个指向const类类型对象的const指针。由于这个原因:(1) 返回值 函数名 (参数列表) const {…} 这... 阅读全文
posted @ 2014-08-12 10:09 冰花ぃ雪魄 阅读(221) 评论(0) 推荐(0) 编辑
用 const 限定类的成员函数
摘要:类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限... 阅读全文
posted @ 2014-08-12 09:58 冰花ぃ雪魄 阅读(213) 评论(0) 推荐(0) 编辑
C++文件读写详解(ofstream,ifstream,fstream)
摘要:c++bufferiosiostreamfilestream目录(?)[+]在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view pl... 阅读全文
posted @ 2014-08-11 22:39 冰花ぃ雪魄 阅读(333) 评论(0) 推荐(0) 编辑
C++中回调函数(CallBack)的使用
摘要:如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现成员函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的... 阅读全文
posted @ 2014-08-10 20:48 冰花ぃ雪魄 阅读(2274) 评论(0) 推荐(0) 编辑
SetTimer函数的用法
摘要:什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数 了。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数... 阅读全文
posted @ 2014-08-10 20:26 冰花ぃ雪魄 阅读(2175) 评论(0) 推荐(0) 编辑
CString转换成int CString类相应函数
摘要:CString 型转化成 int 型 把 CString 类型的数据转化成整数类型最简单的方法就是使用标准的字符串到整数转换例程。 虽然通常你怀疑使用_atoi()函数是一个好的选择,它也很少会是一个正确的选择。如果你准备使用 Unicode 字符,你应该用_ttoi(),它在 ANSI 编码系... 阅读全文
posted @ 2014-08-10 09:56 冰花ぃ雪魄 阅读(706) 评论(0) 推荐(0) 编辑
HeapAlloc、GlobalAlloc和new等内存分配有什么区别么?
摘要:查找了一些 new , GlobalAlloc, HeapAlloc分配内存方式的区别。转了一些资料//===========================================================//下面是资料1:1. GlobalAlloc函数和new()的区别。1>ne... 阅读全文
posted @ 2014-08-09 09:54 冰花ぃ雪魄 阅读(1873) 评论(0) 推荐(0) 编辑
C语言中字符数组和字符串指针分析
摘要:这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序:#include int main(int ... 阅读全文
posted @ 2014-08-09 09:25 冰花ぃ雪魄 阅读(276) 评论(0) 推荐(0) 编辑
socket 连接,使得地址马上可以重用
摘要:/* 使地址马上可以重用 */ int nRet = 1; if(SOCKET_ERROR==setsockopt(m_ls... 阅读全文
posted @ 2014-08-08 10:10 冰花ぃ雪魄 阅读(575) 评论(0) 推荐(0) 编辑
shutdown 和closesocket
摘要:来,咱们彻底的来讨论一下这个shutdown 和closesocket从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会... 阅读全文
posted @ 2014-08-08 10:07 冰花ぃ雪魄 阅读(238) 评论(0) 推荐(0) 编辑
IP地址转换成Long型数字的算法
摘要:在应用程序开发中,涉及到IP地址的存储,大部分开发人员都将其存为String(或文本类型)。能否将固定格式为m.n.x.y的IP地址转换成 Long型的数字呢?答案是肯定的。在数据库层面,可以直接将结果设置成表的主键,避免IP地址的重复,因为是主键,也就是表的索引了,数据库查找时会更 快。对于格式为... 阅读全文
posted @ 2014-08-08 01:18 冰花ぃ雪魄 阅读(1412) 评论(0) 推荐(0) 编辑
WSAStartup( )
摘要:这里用通俗的语言解释一下这个函数,就类似于opencv一样,要添加链接库函数,cv.lib等,要添加到附加依赖项,或者通过#pragma comment(lib,”cv.lib“)一样,然后才能包含头文件进行各种函数的调用。当然了,socket编程要调用各种socket函数,但是需要库Ws2_32... 阅读全文
posted @ 2014-08-07 22:39 冰花ぃ雪魄 阅读(580) 评论(0) 推荐(0) 编辑
关于完成端口IOCP异步接收连接函数AcceptEx注意事项
摘要:AcceptEx方法有一个参数dwReceiveDataLength,指明了在收到连接后是否需要收到第一包数据才返回。需要注意的是,如果dwReceiveDataLength=0,则当接收到一个连接后立即返回,如果dwReceiveDataLength不等于0,则在接收到连接后,必须等到客户端发来第... 阅读全文
posted @ 2014-08-07 21:11 冰花ぃ雪魄 阅读(492) 评论(0) 推荐(0) 编辑
setsockopt的作用列表
摘要:功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示... 阅读全文
posted @ 2014-08-07 21:09 冰花ぃ雪魄 阅读(228) 评论(0) 推荐(0) 编辑
setsockopt的作用
摘要:之前一直没明白setsockopt的作用。原来是用来设置socket的属性。setsockopt设置SO_REUSEADDR。socket关闭之后并不会立即收回,而是要经历一个TIME_WAIT的阶段。windows下最多可以达到4分钟。所以在这个时候对这个端口进行重新绑定就会出错。所以需要先设置S... 阅读全文
posted @ 2014-08-07 21:07 冰花ぃ雪魄 阅读(312) 评论(0) 推荐(0) 编辑
GetQueuedCompletionStatus的返回值
摘要:完成端口GetQueuedCompletionStatus返回值的问题先看看GetQueuedCompletionStatus函数的完整声明:BOOL GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytes, ... 阅读全文
posted @ 2014-08-07 09:10 冰花ぃ雪魄 阅读(2022) 评论(0) 推荐(1) 编辑
在完成端口中使用GetAcceptExSockaddrs
摘要:MSDN:When using AcceptEx, the GetAcceptExSockaddrs function must be called to parse the buffer into its three distinct parts (data, local socket addre... 阅读全文
posted @ 2014-08-06 17:04 冰花ぃ雪魄 阅读(645) 评论(0) 推荐(0) 编辑
PostQueuedCompletionStatus
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ... 阅读全文
posted @ 2014-08-06 15:45 冰花ぃ雪魄 阅读(568) 评论(0) 推荐(0) 编辑
PostQueuedCompletionStatus详解
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ... 阅读全文
posted @ 2014-08-06 15:44 冰花ぃ雪魄 阅读(1409) 评论(0) 推荐(0) 编辑
完成端口(IOCP)怎么判断某个连接是否断开
摘要:完成端口函数:[csharp] view plaincopyBOOLGetQueuedCompletionStatus(HANDLECompletionPort,LPDWORDlpNumberOfBytes,PULONG_PTRlpCompletionKey,LPOVERLAPPED*lpOverl... 阅读全文
posted @ 2014-08-06 11:19 冰花ぃ雪魄 阅读(720) 评论(0) 推荐(0) 编辑
我对CONTAINING_RECORD宏的详细解释
摘要:宏CONTAINING_RECORD的用处其实还是相当大的, 而且很是方便, 它的主要作用是: 根据结构体中的某成员的指针来推算出该结构体的指针! 下面从一个简单的例子开始说起: 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; ... 阅读全文
posted @ 2014-08-06 11:00 冰花ぃ雪魄 阅读(243) 评论(0) 推荐(0) 编辑
WSARecv()
摘要:简述:从一个套接口接收数据。#include int WSAAPI WSARecv (SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPINT lpFlags,LPWSAOVERLAPPED ... 阅读全文
posted @ 2014-08-06 09:47 冰花ぃ雪魄 阅读(597) 评论(0) 推荐(0) 编辑
AcceptEx编辑
摘要:Windows套接字AcceptEx函数接受一个新的连接,返回本地和远程地址,并接收由客户端应用程序发送的第一块数据。Windows 95/98不支持AcceptEx函数。平台SDK:Windows套接字AcceptEx注意:此函数是一个Microsoft特定的扩展,Windows Sockets规... 阅读全文
posted @ 2014-08-06 09:42 冰花ぃ雪魄 阅读(387) 评论(0) 推荐(0) 编辑
CreateWaitableTimer和SetWaitableTimer函数(定时器)
摘要:用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想 实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的 时钟是比较精确... 阅读全文
posted @ 2014-08-05 20:39 冰花ぃ雪魄 阅读(2190) 评论(0) 推荐(0) 编辑
CString的GetBuffer用法,GetBuffer本质,GetBuffer常见问题解决方法
摘要:一.函数原型CString::GetBufferLPTSTR GetBuffer( int nMinBufLength );throw( CMemoryException );Return ValueAn LPTSTR pointer to the object’s (null-terminated... 阅读全文
posted @ 2014-08-05 10:07 冰花ぃ雪魄 阅读(962) 评论(0) 推荐(0) 编辑
c++字符串机理
摘要:在windows编程中,由于编码方式的不同和c与c++的不同而造成了许多复杂的有关字符串之间的转换首先,windows编码方式有ANSCLL和UNICODE,前者是单字符的,后者是双字符的。然后,char*理所当然是单字符的,string也是单字符的,而CString是Tchar的。那么什么是TCH... 阅读全文
posted @ 2014-08-05 09:50 冰花ぃ雪魄 阅读(228) 评论(0) 推荐(0) 编辑
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
摘要:UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的... 阅读全文
posted @ 2014-08-05 09:21 冰花ぃ雪魄 阅读(315) 评论(0) 推荐(0) 编辑
c++,windows中的字符问题
摘要:string与char*的转换方法string a;char *b=a.c_str();string a=new String(b);a=b;LPCWSTR是unicode的字符串,LPCSTR是ascll字符串你可以使用Microsoft在ATL里面提供的宏来进行转换#includeUSES_CO... 阅读全文
posted @ 2014-08-04 23:43 冰花ぃ雪魄 阅读(175) 评论(0) 推荐(0) 编辑
手把手教你玩转SOCKET模型之重叠I/O篇(上)
摘要:“身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人。我也希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯付出时的吝啬。” ----- 题记 By PiggyXP(小猪)前 言 其实我首先应该道歉,因为7月... 阅读全文
posted @ 2014-08-04 18:01 冰花ぃ雪魄 阅读(357) 评论(0) 推荐(0) 编辑
手把手教你玩转SOCKET模型之重叠I/O篇(下)
摘要:四。 实现重叠模型的步骤作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了。其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却是真的不难,唯一需要理清思路的地方就是和大量的客户端交互的情况下,我们得到事件通知以后,如何得知是哪一个重叠... 阅读全文
posted @ 2014-08-04 17:17 冰花ぃ雪魄 阅读(231) 评论(0) 推荐(0) 编辑
使用WSAIoctl获取socket扩展函数(如AcceptEx)的指针
摘要:未获取函数指针就调用函数(如直接连接mswsock.lib并直接调用AcceptEx)的消耗是很大的,因为AcceptEx 实际上是存在于Winsock2结构体系之外的。每次应用程序常试在服务提供层上(mswsock之上)调用AcceptEx时,都要先通过WSAIoctl获取该函数指针。如果要避免这... 阅读全文
posted @ 2014-08-04 16:27 冰花ぃ雪魄 阅读(1343) 评论(0) 推荐(0) 编辑
我对CONTAINING_RECORD宏的详细解释
摘要:宏CONTAINING_RECORD的用处其实还是相当大的, 而且很是方便, 它的主要作用是: 根据结构体中的某成员的指针来推算出该结构体的指针! 下面从一个简单的例子开始说起: 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; ... 阅读全文
posted @ 2014-08-03 22:20 冰花ぃ雪魄 阅读(157) 评论(0) 推荐(0) 编辑
线程句柄有什么用
摘要:非托管资 源:ApplicationContext,Brush,Component,ComponentDesigner,Container,Context,Cursor,FileStream,Font,Icon,Image,Matrix,Object,OdbcDataReader,OleDBData... 阅读全文
posted @ 2014-08-03 21:47 冰花ぃ雪魄 阅读(536) 评论(0) 推荐(0) 编辑
用完成例程(Completion Routine)实现的重叠I/O模型
摘要:/// 用完成例程(Completion Routine)实现的重叠I/O模型/// 异步IO模型/// 用完成例程来实现重叠I/O比用事件通知简单得多。在这个模型中,主线程只用不停的接受连接/// 即可;辅助线程判断有没有新的客户端连接被建立,如果有,就为那个客户端套接字激活一个/// 异步的WS... 阅读全文
posted @ 2014-08-03 17:12 冰花ぃ雪魄 阅读(853) 评论(0) 推荐(0) 编辑
网络蜘蛛
摘要:网络蜘蛛 网络蜘蛛基本原理 网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网... 阅读全文
posted @ 2014-08-03 16:50 冰花ぃ雪魄 阅读(296) 评论(0) 推荐(0) 编辑
AcceptEx与WSAEventSelect和Accept
摘要:(转自论坛的一个帖子http://bbs.csdn.net/topics/280032853)AcceptEx主要用于向完成端口投递一个或多个的连接请求。。当有连接时进来,这里分两种情况:1.Accept不接受数据,工作线程收到IO完成操作的通知。2.Aceept必须接收到客户端的部分数量,工作线程... 阅读全文
posted @ 2014-08-03 09:48 冰花ぃ雪魄 阅读(397) 评论(0) 推荐(0) 编辑
完成端口(CompletionPort)详解
摘要:手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….... 阅读全文
posted @ 2014-08-02 23:30 冰花ぃ雪魄 阅读(382) 评论(0) 推荐(0) 编辑
INVALID_SOCKET的值
摘要:INVALID_SOCKET的值(2011-06-26 15:06:45)标签: 杂谈 INVALID_SOCKET的值不是-1,原因参考basetsd.h和WinSock2.h:typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;typedef UINT_... 阅读全文
posted @ 2014-08-02 16:49 冰花ぃ雪魄 阅读(3759) 评论(0) 推荐(0) 编辑
Windows下C语言的Socket编程例子(TCP和UDP)
摘要:一。 server端: 1 #include "stdafx.h" 2 #include 3 #include 4 5 #pragma comment(lib,"ws2_32.lib") 6 7 int main(int argc, char* argv[]) 8 { 9 //初始化... 阅读全文
posted @ 2014-08-02 16:47 冰花ぃ雪魄 阅读(422) 评论(0) 推荐(0) 编辑
Socket编程(c语言示例)
摘要:转自:http://blog.csdn.net/dxpqxb/article/details/8166423前言 Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立 关系。此后,应用程序送给Socket的... 阅读全文
posted @ 2014-08-02 16:46 冰花ぃ雪魄 阅读(511) 评论(0) 推荐(0) 编辑
GlobalAlloc()和malloc()、HeapAlloc()
摘要:两者都是在堆上分配内存区。malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存。GlobalAlloc()是16位WINDOWS程序使用的API,返回一个内存句柄,在实际需要使用时,用GlobalLock()... 阅读全文
posted @ 2014-08-02 15:04 冰花ぃ雪魄 阅读(403) 评论(0) 推荐(0) 编辑
win32的计数增减操作的原子操作--InterLockedIncrement和InterlockedDecrement
摘要:InterLockedIncrement and InterLockedDecrement实现数的原子性加减。什么是原子性的加减呢?举个例子:如果一个变量 Long value =0;首先说一下正常情况下的加减操作:value+=1;1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的... 阅读全文
posted @ 2014-08-02 14:43 冰花ぃ雪魄 阅读(414) 评论(0) 推荐(0) 编辑
C语言中volatile关键字的作用
摘要:一.前言1.编译器优化介绍:由 于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一 定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软... 阅读全文
posted @ 2014-08-02 14:23 冰花ぃ雪魄 阅读(212) 评论(0) 推荐(0) 编辑
critical section的用法
摘要:critical section Critical Section: 不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。每个进程中访问临界资源的那段代码称为临界区(Critical Section)。 每个进程中访问临界资源的那段程序称为临界区(Critical Sect... 阅读全文
posted @ 2014-08-02 14:15 冰花ぃ雪魄 阅读(558) 评论(0) 推荐(0) 编辑
慎用WSACleanup()
摘要:中止Windows Sockets DLL的使用. #include int PASCAL FAR WSACleanup ( void );应用程序或DLL在使用Windows Sockets服务之前必须要进行一次成功的WSAStartup()调用.当它完成了Windows Socket... 阅读全文
posted @ 2014-08-02 13:38 冰花ぃ雪魄 阅读(1891) 评论(0) 推荐(0) 编辑
WINAPI和APIENTRY是一样的
摘要:今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter);不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLB... 阅读全文
posted @ 2014-08-02 13:24 冰花ぃ雪魄 阅读(704) 评论(0) 推荐(0) 编辑
WSAStartup函数
摘要:函数WSAStartup一、WSAStartup函数 int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使... 阅读全文
posted @ 2014-08-02 11:13 冰花ぃ雪魄 阅读(1057) 评论(0) 推荐(0) 编辑
makeword()
摘要:MAKEWORD(学习之用,转载) MAKEWORD 宏 平台:SDK 这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。 (注:typedef unsigned short WORD;) WORD MAKEWORD( BYTE bLow, //指定新变量的低字... 阅读全文
posted @ 2014-08-02 11:10 冰花ぃ雪魄 阅读(591) 评论(0) 推荐(0) 编辑
CreateEvent的用法
摘要:事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下:HANDLE CreateEv... 阅读全文
posted @ 2014-08-02 10:40 冰花ぃ雪魄 阅读(165) 评论(0) 推荐(0) 编辑
VC中_T()的作用
摘要:Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_... 阅读全文
posted @ 2014-08-02 10:39 冰花ぃ雪魄 阅读(332) 评论(0) 推荐(0) 编辑
多线程的那点儿事(之生产者-消费者)
摘要:生产者-消费者是很有意思的一种算法。它的存在主要是两个目的,第一就是满足生产者对资源的不断创造;第二就是满足消费者对资源的不断索取。当然,因为空间是有限的,所以资源既不能无限存储,也不能无限索取。 生产者的算法,[cpp] view plaincopyWaitForSingleObject(hEmp... 阅读全文
posted @ 2014-08-01 19:05 冰花ぃ雪魄 阅读(166) 评论(0) 推荐(0) 编辑
多线程的那点儿事(之windows锁)
摘要:在windows系统中,系统本身为我们提供了很多锁。通过这些锁的使用,一方面可以加强我们对锁的认识,另外一方面可以提高代码的性能和健壮性。常用的锁以下四种:临界区,互斥量,信号量,event。 (1)临界区 临界区是最简单的一种锁。基本的临界区操作有,[cpp] view plaincopyIni... 阅读全文
posted @ 2014-08-01 17:46 冰花ぃ雪魄 阅读(962) 评论(0) 推荐(0) 编辑
多线程的那点儿事(之自旋锁)
摘要:自旋锁是SMP中经常使用到的一个锁。所谓的smp,就是对称多处理器的意思。在工业用的pcb板上面,特别是服务器上面,一个pcb板有多个cpu是 很正常的事情。这些cpu相互之间是独立运行的,每一个cpu均有自己的调度队列。然而,这些cpu在内存空间上是共享的。举个例子说,假设有一个数据 value... 阅读全文
posted @ 2014-08-01 17:42 冰花ぃ雪魄 阅读(183) 评论(0) 推荐(0) 编辑
多线程的那点事儿(之数据互斥)
摘要:在多线程存在的环境中,除了堆栈中的临时数据之外,所有的数据都是共享的。如果我们需要线程之间正确地运行,那么务必需要保证公共数据的执行和计算是正确 的。简单一点说,就是保证数据在执行的时候必须是互斥的。否则,如果两个或者多个线程在同一时刻对数据进行了操作,那么后果是不可想象的。 也许有的朋友会说,不... 阅读全文
posted @ 2014-08-01 17:39 冰花ぃ雪魄 阅读(191) 评论(0) 推荐(0) 编辑
多线程的那点儿事(之数据同步)
摘要:多线程创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们就可以利用它为我们编写一段简单的多线程代码,[cpp] view plaincopy#include#include#includeunsignedintvalue=0;voidprint(... 阅读全文
posted @ 2014-08-01 17:32 冰花ぃ雪魄 阅读(160) 评论(0) 推荐(0) 编辑
多线程的那点儿事(基础篇)
摘要:多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程?当然,要了解到多进程,就要涉及到操作系统。不过大家也不要紧张,听我慢慢道来。这其中的环节其实并不复杂。 (1)单CPU下的多线程 在没有出现多核CPU之前,我们的计算资源是唯一的。如果系统中有多个任务要处理的话,那么就... 阅读全文
posted @ 2014-08-01 17:26 冰花ぃ雪魄 阅读(138) 评论(0) 推荐(0) 编辑
多线程编程基础知识
摘要:当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线 程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在 的大型应用... 阅读全文
posted @ 2014-08-01 17:12 冰花ぃ雪魄 阅读(190) 评论(0) 推荐(0) 编辑
多线程编程简介
摘要:http://fanqiang.chinaunix.net/a4/b8/20010811/0905001105.html1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一... 阅读全文
posted @ 2014-08-01 16:46 冰花ぃ雪魄 阅读(203) 评论(0) 推荐(1) 编辑
winsock的io模型(终极篇)
摘要:最近在看服务器框架的搭建,看了不少,都是零零碎碎的,觉得看的差不多了,可以写点最后的总结了,然后,竟然发现了这篇文章,总结做的特别好,肯定比我总结写要好多了,所以我也就不写了,直接转吧。。。。。。套接字模式:锁定、非锁定套接字I/O模型: select(选择)WSAAsyncSelect(异步选择)... 阅读全文
posted @ 2014-08-01 10:53 冰花ぃ雪魄 阅读(652) 评论(0) 推荐(0) 编辑
ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?
摘要:1.ioctlsocket()简述:控制套接口的模式。#includeintPASCALFARioctlsocket(SOCKETs,longcmd,u_longFAR*argp);s:一个标识套接口的描述字。cmd:对套接口s的操作命令。argp:指向cmd命令所带参数的指针。注释:本函数可用于任... 阅读全文
posted @ 2014-08-01 09:13 冰花ぃ雪魄 阅读(1427) 评论(0) 推荐(0) 编辑