局域网实时通讯工具-c++builder
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息学院
《计算机网络系统实践》报告
2009 年 9 月
设计题目:局域网实时通讯工具 学生姓名: 学 号: 专业班级:计算机科学与技术06级4班
一、设计要求
1.熟悉WinSock API 主要函数的使用;
2.掌握相应开发工具对Windows Socket API的封装;
3.制作基于局域网的一对一网络即时通讯工具,实现基本数据的网络传输。
二、开发环境与工具
Windows xp C++builder
三、设计原理
网络通讯的基础是套接字Socket.Socket是通信端点的一种概念抽象。它提供了相连的各个通讯端点通过网络进行数据发送和接收机制。Windows Sockets规范是一套开放的,支持多种协议的Windows操作系统下的网络编程API。
Socket接口是TCP/IP网络通信的API。也就是说,Socket接口规定了许多函数和例程,程序员可以用它们来开发TCP/IP网络上的应用程序。今天,Socket接口是TCP/IP网络通信最为通用的API之一。
Socket接口概念
1.网间进程通信
网间进程通信要解决的是不同主机进程间的相互通信问题。为此,首
先要解决的是网络进程标示问题。同一主机上,不同的进程号不能惟
一表示该进程。其次,操作系统支持的网络协议众多,不同的协议的
工作方式不同,地址格式也不同。因此,网间通信还要解决多重协议
的识别问题。
端口
网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。
地址
网络通信中的两个进程分别在不同的机器上。在互联网络中,两台机
器可能位于不同的网络,这些网络通过互连设备连接。因此需要三级寻址
(1)某一主机可以与多个网络相联,必须指定一特定网络地址;
(2)网络上每一台主机应有其惟一的地址
(3)每一主机上的每一个进程应有在该主机上的惟一标志。
网络字节顺序
不同的计算机存放多字节值的顺序不同,有的机器在起始地址
存放地位字节,有的存高位字节。
连接
两个进程间的通讯链路称为连接。
半相关
网络中用一个三元组可以在全局惟一标志一个进程。
全相关
一个完整的网络通信需要两个进程组成,并且只使用同一种高
层协议。
2.服务方式
面向连接和无连接方式
面向连接服务中每一次完整的数据传输都要经过建立连接,使用连接终止连接的过程无连接服务中每个数据报都携带完整的目的地址,各数据报在系统中独立传输。
顺序差错控制流控制字节流数据报缓冲紧急数据
3客户服务器模式
4套接字类型
流式套接字数据报式套接字原始式套接字
服务器端流程图
客户端流程图
打开服务器
设置服务器端的端口
号
点击监听,服务器端进
入监听状态
点击断开按钮,服
务器与客户端断开
设置相同的端口号以及服务器的
IP地址
打开客户端程序
监听到客户端请求
连接的信息
与客户端连接成功
向客户端发送与接收信息
退出程序
与客户端连接失
败
继续监听或者重新
设置端口号再监听
四 系统功能描述及软件模块划分
服务器设计
网络聊天的基础是TCP/IP 协议,服务器把程序转换成一个虚拟的TCP/IP 服务器,并且和指定的客户端建立连接后,成功后向指定的客户端建立连接,在连接成功后想指定的客户端发出连接信号,在连接成功后,向指定的服务器发出信号。
(1) serversocket 组件位于组件模版的internet 标签页下,使用时直
接拖动Form1即可,在使用serversocket 组件时,必须设置serversocket 的端口号。它与客户端进行通信与连接的通道,客户端必须以相同的端口号才能连接。
(2) 在serversocket 组件需要重新设置端口号时,应该首先断开与客
户端的链接,然后再设置端口号再重新连接。
(3) 如果需要使用serversocket 组件发送信息,直接使用其方法
sendtxt()即可,
(4) 当serversocket 组件收到客户端发来的信息是,它会启用
onclientread 事件。要显示相应的内容是,需要自行处理该事件。 聊天客户端设计
(1)Clientsocket 组件位于组件模版的internet 标签页下,使用时直
点击连接按钮,试图与服务器端取得连接
点击断开按钮,客户端与服务器端断开连接 连接成功
向服务器端发送以及接受信息
退出程序
失败
接拖动Form1即可,在使用Clientsocket组件时,必须设置
Clientsocket的端口号。这个端口号必须与服务器设置的端口号一
致,否则它不能与服务器进行连接,并且需要设置连接服务器的IP
地址。
(2)Clientsocket组件需要重新与其他服务器连接时,应该首先断开与原服务器的链接。然后再设置端口号和服务器IP地址并重新连接。
在活动状态时不容许连接新的服务器地址。
(3)Clientsocket组件与服务器连接成功时,会产生OnConnect事件,可以处理该事件的相关内容。
(4)如果需要使用Clientsocket组件发送消息时,直接使用其方法sendtxt()即可。
五设计步骤
服务器端
通信端口
void __fastcall TForm1::Label1Click(TObject *Sender)
{}
Serversocket
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender, TCustomWinSocket *Socket)
{}
监听
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------