全球旧事资料 分类
程序的问题。2.1Wi
dowSocket介绍Wi
dowsSocket是从UNIXSocket继承发展而来,最新的版本是22。进行Wi
dows网络编程,你需要在你的程序中包含WINSOCK2H或MSWSOCKH,同时你需要添加引入库WS2_32LIB或WSOCK32LIB。准备好后,你就可以着手建立你的第一个网络程序了。Socket编程有阻塞和非阻塞两种,在操作系统IO实现时又有几种模型,包括Select,WSAAsy
cSelect,WSAEve
tSelect,IO重叠模型,完成端口等。要学习基本的网络编程概念,可以选择从阻塞模式开始,而要开发真正实用的程序,就要进行非阻塞模式的编程(很
f难想象一个大型服务器采用阻塞模式进行网络通信)。在选择IO模型时,我建议初学者可以从WSAAsy
cSelect模型开始,因为它比较简单,而且有一定的实用性。但是,几乎所有人都认识到,要开发同时响应成千上万用户的网络程序,完成端口模型是最好的选择。既然完成端口模型是最好的选择,那为什么我们不直接写出一个使用完成端口的程序,然后大家稍加修改就OK了。我认为这确实是一个好的想法,但是真正做项目的时候,不同的情况对程序有不同的要求,如果不深入学习网络编程的各方面知识,是不可能写出符合要求的程序,在学习网络编程以前,我建议读者先学习一下网络协议。2.2第一个网络程序由于服务器客户端模式的网络应用比较多,而且服务器端的设计是重点和难点。所以我想首先探讨服务器的设计方法,在完成服务器的设计后再探讨其他模式的网络程序。设计一个基本的网络服务器有以下几个步骤:1、初始化Wi
dowsSocket2、创建一个监听的Socket3、设置服务器地址信息,并将监听端口绑定到这个地址上4、开始监听5、接受客户端连接6、和客户端通信7、结束服务并清理Wi
dowsSocket和相关数据,或者返回第4步我们可以看出设计一个最简单的服务器并不需要太多的代码,它完全可以做一个小型的聊天程序,或进行数据的传输。但是这只是我们的开始,我们的最终目的是建立一个有大规模响应能力的网络服务器。如果读者对操作系统部分的线程使用还有疑问,我建议你现在就开始复习,因为我们经常使用线程来提高程序性能,其实线程就是让CPU不停的工作,而不是总在等待IO,或者是一个CPI,累死了还是一个CPU。千万不要以为线程越多的服务器,它的性能就越好,线程的切换也是需要消耗时间的,对于IO等待少的程序,线程越多性能反而越低。下面是简单的服务器和客户端源代码。(阻塞模式下的,供初学者理解)TCPServeri
cludeltwi
sock2hgtvoidmai
voidWSADATAwsaDataSOCKETr
好听全球资料 返回顶部