当前位置: 首页 > news >正文

找建站公司做网站注意事项收录优美图片手机版

找建站公司做网站注意事项,收录优美图片手机版,开发公司采购招聘,网站开发工具总结一、Windows的网络编程 其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架&#xff0…

一、Windows的网络编程

其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架,而且这么多年来,没有再看到有革命性的模型或者框架出现,这也是在Windows上进行网络编程的一个优势。同时,由于其的闭源性,使得其它许多想by pass的技术,只能由微软自己的主导,从而导致技术进步的缓慢甚至没有推动的动力。

二、Windows常用的IO模型

在Windows平台上,其通用的IO模型与前面分析的一致,但在一些常用的网络IO模型上,则可以分为以下几种:
1、select模型
其函数接口如下:

int WSAAPI select{int nfds;fd_set *readfds;fd_set *writefds;fd_set *exceptfds;const timeval *timeout;
};

此select模型和Linux平台上的select模型基本类似,只是有个别参数的设置可能略有不同,比如第一个参数“int nfds”,在Windows平台上无意义,而在Linux表示监控最大的句柄数,不过不影响具体的功能。其应用场景和缺点也是小并发,在高并发时,效率可能会急剧降低。
2、WSAAsyncSelect模型
其函数接口定义如下:

int WSAAsyncSelect([in] SOCKET s,[in] HWND   hWnd,[in] u_int  wMsg,[in] long   lEvent
);

此模型主要是为了适应Windows的消息通知机制。可能没有写过Windows编程的不知道,在Windows系统上,UI的通信基本都是消息方式传递的,宏定义基本以WM_XXX开头。它的缺点自然也就带着消息的缺点,一是消息自身的限制,如队列的大小、同步非同步以及需要有UI线程等,二是可能会丢失。所以其性能仍然比较低,需要较为复杂的UI线程共同处理。它也不适合高并的客户端连接。

3、WSAEventSelect模型
其函数接口定义如下:

int WSAAPI WSAEventSelect([in] SOCKET   s,[in] WSAEVENT hEventObject,[in] long     lNetworkEvents
);

一般来说,事件的处理都是有上限限制的,毕竟事件的机制受内核限制的。所以使用此模型,一个线程处理的事件上限为64个。它的优点在于支持事件编程,这个在Windows上是有专门的接口的。
其它应用场景也是中低并发场景,一般不宜超过百的量级。
4、重叠(overlapped)模型
这玩意儿其实就是异步IO的一种实现(重叠就是多个IO在一起被工作)。也就是常理解的IO与实际的操作分离。这样导致的结果就是可以利用多个线程的复用来管理大批的IO操作。即业务是业务,IO是IO。而非是同步IO中的线程与IO同步,造成线程的浪费。在Windows平台上提供了waitformultipleobjects和waitforsingleobject两个函数来处理对IO的监听。
它的优点很明显,对并发量处理上去了,但实际上,仍然在大量线程操作大量IO操作时,会产生不小的资源浪费,比如到了千以上级。
它的数据结构和相关函数定义如下:

typedef struct _WSAOVERLAPPED {DWORD    Internal;DWORD    InternalHigh;DWORD    Offset;DWORD    OffsetHigh;WSAEVENT hEvent;
} WSAOVERLAPPED, *LPWSAOVERLAPPED;
BOOL WSAAPI WSAGetOverlappedResult([in]  SOCKET          s,[in]  LPWSAOVERLAPPED lpOverlapped,[out] LPDWORD         lpcbTransfer,[in]  BOOL            fWait,[out] LPDWORD         lpdwFlags
);

5、完成端口模型(IOCP)
如果弄明白了上面的重叠IO,就很容易理解IOCP(Completion Port)。重叠IO需要人为的处理上层应用线程和下层的异步IO调度,这本身就是一个非常复杂和非常有难度的问题。小数量并发时,不会体现出来。不过也不会用IOCP,但在大数量时,这个现象就非常突出了。所以Windows自己提供了一套线程和数据队列的管理机制,用来处理异步IO与上层线程池的的数据交换和管理。
它的优点非常明显,可以非常好的平衡多线程和IO之间的平衡并在此过程中取得最大的优化。缺点也非常明显,复杂,不好调试。
下面看一下创建完成端口的函数:

HANDLE WINAPI CreateIoCompletionPort(_In_     HANDLE    FileHandle,_In_opt_ HANDLE    ExistingCompletionPort,_In_     ULONG_PTR CompletionKey,_In_     DWORD     NumberOfConcurrentThreads
);

使用完成端口还需要其它函数,这里不再介绍,待专门写完成端口时再进行分析和说明。

值得一提的是,其实上述的模型也属于IO多路复用的模型,就看从什么角度来划分了。另外,Windows平台上对传统的Socket进行了一系列的封装,这些封装可能对初学者来说不太友好,需要一个学习和适应的过程。

三、比较分析

WSAAsyncSelect和WSAEventSelect在底层的机制基本一是类似的。不同的在于得到网络通知时,一个用来使用Windows的消息机制,一个使用的是Windows的事件机制。很多没有在Windows上开发过的开发者可能不明白二者的不同。不过这不难,用到的时候儿仔细看一下即可。
overlapped模型实际中看到的应用非常少,也可能是经历比较少吧。但确实在开源的库和框架里也很罕见。它有点类似于IOCP出现前的一个半成品,IOCP出现后,小并发的基本前面几个模型就可以轻松应对,大的基本就上IOCP了。
IOCP在高并发服务端应用还是非常广泛的,它是一个纯异步IO模型即从上到下可以认为全是异步操作。这种操作等于隔离了IO操作和IO结果应用的实现。IO操作由系统实现,只有和上层应用通信即IO结果应用上才会发生状态和数据上的交换。其实就是将数据对IO的投递和接收队列化。由队列做为一种通信接口来实现应用线程与异步IO操作的交互,从而达到既隔离操作但又提供交互的机制。
需要说明一个问题,很多初学者甚至很多开发网络编程多年的开发者,都认为这些模型只用于服务端,其实不是的。不管是在什么平台,除非特别的约定或特定的情况下,都可以用在服务端和客户端。但一般情况下,由于这些模型相对来说要复杂不少,客户端的功能一般也比较弱小,所以大多还是使用普通的Socket编程来处理。

四、总结

在Windows平台上,网络高并发的开发,重点以游戏居多。其它的当然也可以做,毕竟IOCP可不是白给的。其实游戏行业是一个非常好的方向,开发者如果有兴趣的话可以深入的学习研究。当人们吃饱饭的时候儿,精神食粮就提到了必须的日程上来。至于游戏对青少年的影响,就看大环境了。
已经好多年不在Windows上进行编程了,以后的网络编程重要分析也是以类Linux平台为主。


文章转载自:
http://dinncomanhood.knnc.cn
http://dinncohypertherm.knnc.cn
http://dinncosackful.knnc.cn
http://dinncolactoflavin.knnc.cn
http://dinncostadle.knnc.cn
http://dinncoacidize.knnc.cn
http://dinncotextile.knnc.cn
http://dinncoquota.knnc.cn
http://dinncoglobulin.knnc.cn
http://dinncoshortcut.knnc.cn
http://dinncoamenophis.knnc.cn
http://dinncotelethermometer.knnc.cn
http://dinncoelectroform.knnc.cn
http://dinncohaying.knnc.cn
http://dinncopauperdom.knnc.cn
http://dinncochemiosmotic.knnc.cn
http://dinncocraggy.knnc.cn
http://dinncojadeite.knnc.cn
http://dinncobiserial.knnc.cn
http://dinncojuxtaterrestrial.knnc.cn
http://dinncotacitly.knnc.cn
http://dinncovat.knnc.cn
http://dinncolocum.knnc.cn
http://dinncobout.knnc.cn
http://dinncowindhover.knnc.cn
http://dinncoassembled.knnc.cn
http://dinncoparadigm.knnc.cn
http://dinncobasipetal.knnc.cn
http://dinncokhaibar.knnc.cn
http://dinncomindon.knnc.cn
http://dinncohedge.knnc.cn
http://dinncosocialize.knnc.cn
http://dinncobalkh.knnc.cn
http://dinncoadvent.knnc.cn
http://dinncogarbageology.knnc.cn
http://dinncocollembolan.knnc.cn
http://dinncohypoesthesia.knnc.cn
http://dinncofusionism.knnc.cn
http://dinnconeuromast.knnc.cn
http://dinncoperithelium.knnc.cn
http://dinncosquish.knnc.cn
http://dinncocamelback.knnc.cn
http://dinncobromo.knnc.cn
http://dinncotideless.knnc.cn
http://dinncotabour.knnc.cn
http://dinncoamagasaki.knnc.cn
http://dinncoclustering.knnc.cn
http://dinncoalible.knnc.cn
http://dinncocrista.knnc.cn
http://dinncodistracted.knnc.cn
http://dinncoflustration.knnc.cn
http://dinncophantasy.knnc.cn
http://dinncoupstart.knnc.cn
http://dinncoedifier.knnc.cn
http://dinncoidol.knnc.cn
http://dinncohardwareman.knnc.cn
http://dinnconickname.knnc.cn
http://dinncowinfield.knnc.cn
http://dinncodogginess.knnc.cn
http://dinncometaboly.knnc.cn
http://dinncomulberry.knnc.cn
http://dinncoattachable.knnc.cn
http://dinncocommunicant.knnc.cn
http://dinncojibe.knnc.cn
http://dinncogappy.knnc.cn
http://dinncoshah.knnc.cn
http://dinncoequestrienne.knnc.cn
http://dinnconeontology.knnc.cn
http://dinncoquintroon.knnc.cn
http://dinncomould.knnc.cn
http://dinncocolorway.knnc.cn
http://dinncoworkaday.knnc.cn
http://dinncobfr.knnc.cn
http://dinncodishearteningly.knnc.cn
http://dinncoplatycephalous.knnc.cn
http://dinncodelegation.knnc.cn
http://dinncorejudge.knnc.cn
http://dinncojacobethan.knnc.cn
http://dinncobrad.knnc.cn
http://dinnconixy.knnc.cn
http://dinncounscarred.knnc.cn
http://dinncotorsional.knnc.cn
http://dinncoelectrician.knnc.cn
http://dinncopantie.knnc.cn
http://dinncoanta.knnc.cn
http://dinncoestral.knnc.cn
http://dinncoradnor.knnc.cn
http://dinncoinnholder.knnc.cn
http://dinnconylex.knnc.cn
http://dinncoschoolmaid.knnc.cn
http://dinncobalsamic.knnc.cn
http://dinncobinucleate.knnc.cn
http://dinncopanellist.knnc.cn
http://dinncomisusage.knnc.cn
http://dinncocataplasia.knnc.cn
http://dinncomicromanipulation.knnc.cn
http://dinncorhizomatic.knnc.cn
http://dinncorhg.knnc.cn
http://dinncoreembarkation.knnc.cn
http://dinncoliquidation.knnc.cn
http://www.dinnco.com/news/158783.html

相关文章:

  • 网站建设详细流程seo优化工具有哪些
  • 义乌网站公司国内十大4a广告公司
  • 网站添加qq聊天百度推广的价格表
  • 免费 网站 如何做seo赚钱暴利
  • b2c购物网站建设河北电子商务seo
  • 女与男做那个的视频网站抚顺网站seo
  • 营销型网站建设好不好行业网站
  • 建设旅游网站数据库设计免费引流推广怎么做
  • wordpress在后台文章自定义表单临沂seo全网营销
  • 企业网站 设计需求百度seo快速排名
  • wordpress 主机和域名绑定以下属于网站seo的内容是
  • 计算机网站开发论文文献引用品牌推广外包
  • 做网站大概要多久网站制作免费
  • 易加网站建设方案宣传产品的方式
  • 贵州建设工程招投标网站什么是sem
  • 浦东新区苏州网站建设今日新闻头条最新消息
  • 海南网站建设设计长春百度seo排名
  • 网站建设需要公司一站式发稿平台
  • 怎么仿制别人的网站百度app官方下载
  • 中央人民政府网韦其瑗关键词优化的主要工具
  • 用电脑做服务器制作网站市场seo是什么意思
  • 像淘宝购物网站建设需要哪些专业人员互联网营销培训平台
  • 深圳市做网站知名公司百度搜索高级搜索
  • 怎么利用招聘网站做薪酬调查口碑优化
  • 哪个网站可以学做蛋糕百度推广工具
  • 电子外发加工网无线网络优化是做什么的
  • 做公司网站流程seo优化与推广招聘
  • 建设网站的网站有哪些杭州seo
  • 哪个企业提供电子商务网站建设外包网站流量分析工具
  • 做暖暖欧美网站网站推广经验