1
目
录
1
前 言... 1
2
正 文... 2
2.1 需求分析... 2
2.2 C++Builder开发环境的介绍... 2
2.3 用于文字交谈的组件... 2
2.4 用于文件传输的组件... 3
2.5TCP/IP协议介绍... 4
2.6设计分析... 5
2.6.1 设计原理... 5
2.6.2设计思想... 5
2.6.3主界面及监听界面... 5
2.7 控件属性... 6
2.8控件响应的实现... 8
结 论... 18
致 谢... 19
参考文献... 20
附 录... 21
2
1
前 言
网络是一个激动人心的领域,编写网络上的应用程序更是很多程序员向往的情节,然而编写网络程序需要掌握大量的网络传输协议、编程接口和WinSock32 API
函数.
20世纪90年代以来,计算机网络技术和信息处理技术在全世界范围得到了迅猛发展,基于Tcp/Ip协议的文件传输和即时聊天系统迅速成为数据通信网络上最常用的应用。本课题所要完成的是用C++
builder设计一个基于Tcp/Ip协议的点到点的通信系统,其中包括点到点用户聊天系统、简单文件传输系统、客户端应用程序、服务器端应用程序、网络通讯协议及规范等。
利用FastNet中的NMStrm控件和NMStrmServ控件可以实现发送和接收文件数据流。NMStrm控件是一个基于TCP/IP的流控件,它可以接收流数据,然后通过网络将其发送给服务器;NMStrMServ控件可以接收从客房端发送来的流数据。若要发送流数据,只需调用NMStrm控件的PostIt方法;而若接收流数据可以通过NMStrmServ控件的OnMsg事件来实现。
按照本课题的任务书要求,根据开题报告中所述方案,在本课题中要求完成以下功能。
l
要求建立服务器/用户端模式、建立连接。
l
建立用户主界面并编写其应用程序,实现聊天及简单文件数据传输,并且互不影响。主机面包括四个部分:服务器、选择通讯对象、文件传输、文字交谈。其中服务器部分包括三个输入组件:主机、用户名、口令;三个按钮组件:新用户、老用户、用户下线。选择通讯对象部分包括一个TComboBox控件、两个按钮组件:设置交谈对象、设置文件传输对象。文件传输部分包括一个输入组件:传输对象,三个按钮组件:发送文件、终止发送、终止接收,两个TProgressBar控件:Send File、Receive
File。文字交谈部分包括:两个输入组件:交谈对象、发送内容,一个按钮组件:清空交谈记录,一个TMemo控件。
l
建立一个监控界面对在线用户进行监控。
l
尝试实现网络浏览器功能
3.2
2.2
C++Builder开发环境的介绍
C++Builder是Borland公司推出的一个激动人心的Windows应用程序开发工具。它不仅继承了Delphi简单易用、功能强大和稳定可靠的特性,同时还拥有C++语言语法灵活简洁、执行效率高的固有优点,是Windows平台下最好的C++开发平台之一。尤其在数据库应用、分布式计算和网络程序的开发中,C++Builder更体现出了它在开发周期和 执行效率上的明显优势。
NMMSG 单元包括TNMMSG组件和NMMsgServ组件,其中TNMMSG组件用来在互联网或企业内部互联网发送简单的信息,NMMsgServ组件用来接收TNMMSG组件发出的信息。TNMMSG组件和NMMsgServ组件,是C++Builder提供的基本类,主要为解决互联网/企业内部互联网上的规范及协议提供范例.我们发现TNMMSG组件和NMMsgServ组件非常好用,经你过编译源代码你会发现如何使用这些组件.TPowersock和TNMGeneralServer组件能让TNMMSG组件和NMMsgServ组件转换成更明确的代码.
TNMMSG组件通过基于TCP/IP协议的互联网或企业内部互联网发送用ASCII码编译的信息.主机每发送一条信息都必须运行一个由TNMGeneralServer组件建立的服务器.
声明:
type TMSGEvent =
procedure(Sender: TComponent; const sFrom, sMsg: string) of
object;
描述:
TMSGEvent响应OnMSG事件
参数:sFrom说明信息发送方的地址,sMsg说明信息本身。
TNMMsg的Events事件:
OnConnect:
客户机与服务器连接成功时被调用;
OnConnectFailed:
该事件在客户机与服务器连接失败时被调用;
OnDisconnect:
该事件在客户机断开与服务器的连接时被调用;
OnHostResolved:
找到远程主机的IP地址时,调用该事件,如果远程主机非法,则
调用
OnInvalidHost事件;
OnMessageSent:
当一个消息成功地传送到远程主机时,该事件被调用;
OnStatus:
每次从服务器传来消息时,该事件被激活,传来的内容包含在Status字符串中,同时,Status属性的值也被更新。
TNMMsgServ的Properties属性:
Host
用于设置主机
Port
用于设置端口号
TNMMsgServ的Events事件,与TNMMsg相比它多了以下几个事件:
OnClientContact
当有客户有响应时就响应该事件
OnMSG
此事件用于响应相应的输入
同时TNMMsgServ没有TNMMsg中的OnMessageSent事件。
我使用了Builder里面的NerMasters控件中的NMStrm和NMStrmServ两个控件。NMStrm控件是一个基于TCP/IP的流控件。它可以接收流数据,然后通过网络将其发送给服务器。此控件包括一些方法和属性,例如,设置数据的来源等。
NMStrmServ控件可以接收从客户端发送来的数据流。流服务器只监听TCP/IP端口,不负责监听UDP
端口,默认的端口号是6771。要发送的文件流数据,只需要简单地调用NMStrm控件地PostIt方法。而当有流数据发送到服务端,触发NMStrmAerv控件地OnMsg事件时,可以在此事件处理函数中完成文件地显示等处理工作。
TNMStrm的Properties 属性:
Host
用于设置主机的地址
Port
用于设置端口号
TNMStrm的Events事件与TNMMsg相同,在这不多说了。
NMStrmServ的Properties 属性:
Host
用于设置主机的地址
Port
用于设置端口号