Lv.的博客

随笔分类 -  Win32

摘要:█ 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、... 阅读全文
posted @ 2015-05-14 18:43 Avatarx 编辑
摘要:在 Winsock 中,重叠 I/O(Overlapped I/O)模型能达到更佳的系统性能,高于select模型、异步选择和事件选择三种。重叠模型的基本设计原理便是让应用程序使用一个重叠的数据结构(WSAOVERLAPPED),一次投递一个或多个 Winsock I/O 请求。针对这些提交的请求... 阅读全文
posted @ 2015-05-14 15:19 Avatarx 编辑
摘要:在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?实际上,当sockaddr_in.sin_family = AF_INET时,sockaddr =so... 阅读全文
posted @ 2015-05-14 13:13 Avatarx 编辑
摘要:FD_READ事件l调用WSAEventSelect函数时,如果当前有数据可读l有数据到达时,并且没有发送过FD_READ事件l调用recv/recvfrom函数后,仍然有数据可读时RD_WRITE事件l调用WSAEventSelect函数时,如果调用能够发送数据时l调用connect()/acce... 阅读全文
posted @ 2015-05-14 11:18 Avatarx 编辑
摘要:简述:只要指定事件对象中的一个或全部处于有信号状态,或者超时间隔到,则返回。#include DWORD WSAAPI WSAWaitForMultipleEvents( DWORDcEvents,const WSAEVENT FAR * lphEvents, BOOL fWaitAll,DWORD... 阅读全文
posted @ 2015-05-14 11:00 Avatarx 编辑
摘要:accept()不是监听,accept()是接受新连接。listen()是进入监听状态,表示愿意接收连接请求。listen之后有连接请求就将其放到队列中,accept()时把新连接请求从队列中取出,建立新的socket。 阅读全文
posted @ 2015-05-14 10:39 Avatarx 编辑
摘要:WSAEventSelect 是 WinSock 提供的一种异步事件通知I/O模型,与 WSAAsyncSelect模型有些类似。 该模型同样是接收 FD_XXX 之类的网络事件,但是是通过事件对象句柄通知,而非像 WSAAsyncSelect一样依靠Windows的消息驱动机制。与WSAAsync... 阅读全文
posted @ 2015-05-14 10:27 Avatarx 编辑
摘要:#include#includebool ctrlhandler( DWORD fdwctrltype ){switch( fdwctrltype ){// handle the ctrl-c signal.case CTRL_C_EVENT:printf( "ctrl-c event\n\n" )... 阅读全文
posted @ 2015-05-14 10:06 Avatarx 编辑
摘要:上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接... 阅读全文
posted @ 2015-05-14 09:51 Avatarx 编辑
摘要:win32线程池代码(WinApi/C++)健壮, 高效,易用,易于扩, 可用于任何C++编译器//说明, 这段代码我用了很久, 我删除了自动调整规模的代码(因为他还不成熟)/**************************************************************... 阅读全文
posted @ 2015-05-13 23:47 Avatarx 编辑
摘要:[cpp]view plaincopy#include#include//forSTLstringclass#include//forHANDLE#include//for_beginthread()usingnamespacestd;classThreadX{private:intloopStar... 阅读全文
posted @ 2015-05-13 22:43 Avatarx 编辑
摘要:Socket(套接字)作者信息肖进单位:南京中萃食品有限公司资讯部邮箱:xiaoj@njb.swirebev.com电话:025-58642091与socket有关的一些函数介绍1、读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码。intWSAGetLas... 阅读全文
posted @ 2015-05-13 17:10 Avatarx 编辑
摘要:用了三种方法,第一种使用高精度性能计数器;第二种是使用多媒体定时器,另一种是《Windows图形编程》里提供的CPU周期来获取。推荐第一种方式测量:先看第一种:[cpp]view plaincopy#include#includevoidmain(){LARGE_INTEGERlitmp;LONGL... 阅读全文
posted @ 2015-05-13 16:14 Avatarx 编辑
摘要:带下划线_的函数一般是函数库内部的函数,而不带下划线的一般是提供给用户使用的函数。带下划线的目的是为了防止用户定义的函数和函数库的函数重名冲突,所以直接使用也是可以的。要用getch()必须引入头文件conio.h _T这类似的是宏定义转换,转换成函数参数相符合的类型,如果没有,编译器一般可以自动转... 阅读全文
posted @ 2015-05-13 15:12 Avatarx 编辑
摘要:一.创建线程函数 常用的创建线程的函数是CreateThread,还有MFC中的AfxBeginThread方法.另一种函数是_beginthreadex,其实它在内部调用了CreateThread,在调用之前_beginthreadex做了很多的工作,从而使得它比CreateThread更安全.所... 阅读全文
posted @ 2015-05-13 14:59 Avatarx 编辑
摘要:MFC中CString是一个方便的字符串操作的类, 然而很多函数需要传递字符指针, 这就需要进行CString和普通字符串的转换。1、CString用作C字符串常量。直接使用强制类型转换即可, 如:[cpp]view plaincopyCStringstrSports(_T("HockeyisBes... 阅读全文
posted @ 2015-05-13 13:56 Avatarx 编辑
摘要:关于XML文件的解析方法的引导,大家可以去试试这个工具(TinyXML)1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际http://prdownloads.sourceforge.net/tinyxml/tinyxml_2_3_4.zip?download2.下载后解... 阅读全文
posted @ 2015-05-13 13:30 Avatarx 编辑
摘要:本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!它是一个异步非阻塞Socket封装类,CAsyncSocket::Create()有一个参数指明了你想要处理哪些Socket事件,你关心的事件被指定以后,这个Socket默认就被用作了异步方式。CAsyncSocket的Crea... 阅读全文
posted @ 2015-05-12 18:11 Avatarx 编辑
摘要:对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其所以而不知起所以然。 异步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而同步指发... 阅读全文
posted @ 2015-05-12 18:07 Avatarx 编辑
摘要:在网络通讯中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回,这种现象叫做阻塞。 Winsock对有可能阻塞的函数提供了两种处理方式:阻塞和非阻塞方式。阻塞模式在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回。在阻... 阅读全文
posted @ 2015-05-12 17:08 Avatarx 编辑

点击右上角即可分享
微信分享提示