目前,随着宽带网络的普及,越来越多的用户可以体验到高速上网的乐趣,但是在宽带运营中存在一个问题:宽带一般采用的是包月计费的方式,但是用户的需求是多样的,会有按时计费的需求,这就需要采用网络计费系统。现实中存在“按时长计费”和“按流量计费”两种计费模式,“按时长计费”的缺点是在上网的高峰时段,由于网络拥塞而导致的垃圾等待时长不应该算在用户的帐单上!“按流量计费”的缺点是如果电脑误中病毒,向其它电脑发送数据包产生的垃圾流量不应该让用户埋单!就目前国内宽带市场现状,并借鉴国外运营商的相关经验,认为在用户的消费行为偏爱、消费感知和运营商的系统支撑等诸多方面,按流量计费模式都尚不成熟,“按时长收费”的模式仍是首选【3】。 研究此课题是为了利用Winsock的编程实现这一系统,从而使按时收费系统更加适合现代人,也减少了资源的浪费。更进一步的说明利用Winsock可以更加方便的进行高性能网络通讯程序的设计。 设计方案: 本系统在方案选择上采用了在网络编程中最常用的一种模型--客户机/服务器模型。这种客户/服务器模型是一种非对称式编程模式。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。对于这种模式而言其中一部分需要作为服务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某种服务。 本系统选取了基于TCP/IP的客户机/服务器模型和面向连接的流式套接字。其通信原理为:服务器端和客户端都必须建立通信套接字,而且服务器端应先进入监听状态,然后客户端套接字发出连接请求,服务器端收到请求后,建立另一个套接字进行通信,原来负责监听的套接字仍进行监听,如果有其它客户发来连接请求,则再建立一个套接字。默认状态下最多可同时接收5个客户的连接请求,并与之建立通信关系。因此本程序的设计流程应当由服务器首先启动,然后在某一时刻启动客户机并使其与服务器建立连接。服务器与客户机开始都必须调用Windows Sockets API函数socket()建立一个套接字sockets,然后服务器方调用bind()将套接字与一个本地网络地址捆扎在一起,再调用listen()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长度。在此之后服务器就可以通过调用accept()来接收客户机的连接。
|
|