字体
第(1/5)页
关灯
   存书签 书架管理 返回目录
    一个阻塞调用是否在进行中

    FromHandle 返回一个指向CSocket 对象的指针,给出一个Socket 句柄

    Attach 将一个Socket 句柄与一个CSocket 对象连接

    CancelBlockingCall 取消一个当前在进行中的阻塞调用

    OnMessagePending 当等待完成一个阻塞调用时调用此函数来处理未处理的消息

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·288·

    11.4 网络编程的实现

    前面介绍了很多关于Windows 网络编程的知识,也详细介绍了WinSock 类。接下来,本

    节将按照上小节所说的编程步骤,利用CSocket 类编写一个网络聊天程序。相信通过这个程

    序,读者会对CSocket 的基本应用有更加深入的认识。

    实例11-1:网络聊天程序实例。源代码在光盘中“\11\实例11-1”目录下。

    11.4.1 程序设计的基本任务

    为了让读者易于理解而又能体现出网络编程的一般步骤,本程序抛弃很多网络应用程序

    的辅助功能,只实现网络聊天系统的基本功能。该系统包括服务器和客户端两部分,服务器

    允许多个客户端连接,连接到服务器的客户端可以聊天,聊天的内容会在服务器和每个客户

    端显示出来,同时,在服务器上还可以显示出每个客户端的基本信息,比如登录时间和IP 等。

    11.4.2 服务器端程序设计

    1.设计概述

    在进行服务器端程序设计之前,首先要考虑一下消息在程序中如何处理。在整个系统中,

    服务器和客户端的jiāo互都是通过消息完成的,并且对于一般的网络应用程序来说,网络数据

    的有效封装有利于用户对网络通信的管理,也有利于在源程序的基础上作进一步的开发。因

    此在本程序中,会对消息进行简单的封装。

    接下来考虑界面设计。服务器端应该有两个窗口,分别显示各客户端的详细信息(如用

    户名、登录时间、IP 等)和用户的聊天信息。

    关于程序流程在11.3.2 节的第2 小节已有说明。除此之外,在网络编程中还有很重要的

    一点,就是服务器和客户端双方要约定好信息的格式以及发送顺序,只有约定好这些,双方

    才知道对方所发信息的意义。其实这就是通常所说的协议的一个重要部分,在网络应用程序

    的设计中,协议是必不可少的,越是大型的网络应用程序,协议就越复杂。对于本例这个很

    小的程序,可以根据消息的类型(封装在消息类中)对消息进行分类,并且约定当用户登录

    或离开时,都要先发送用户名给服务器,然后再发送正式信息。这样通过消息的种类,服务

    器就能够知道当前消息是一般消息还是用户登录或离开的消息。如果是前者,就将其发送给

    每个客户端,并且在服务器界面将信息显示出来;如果是后者,则将登录或离开的用户名发

    送给各客户端,以使各客户端对用户列表更新,同时更新服务器端的用户列表。

    最后,本程序采用文档-视图结构,视图负责显示,而数据的处理则通过文档类来实现。

    2.编写代码

    (1)创建工程

   
上一章 目录 下一页