局域网实时通讯工具.docx
- 文档编号:7696289
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:207.21KB
局域网实时通讯工具.docx
《局域网实时通讯工具.docx》由会员分享,可在线阅读,更多相关《局域网实时通讯工具.docx(12页珍藏版)》请在冰豆网上搜索。
局域网实时通讯工具
计算机与信息学院
《计算机网络系统实践》报告
2009年9月16日
一.设计要求
1.熟悉WinSockAPI主要函数的使用;
2.掌握相应开发工具对WindowsSocketAPI的封装;
3.制作基于局域网的一对一网络即时通讯工具,实现基本数据的网络传输。
二.开发环境与工具
开发环境:
WindowsxpBorlandC++Builder6.0
三.设计原理
1.网络通讯的基础是套接字Socket。
Socket是通信端点的一种概念抽象。
它提供了相连的各个通讯端点通过网络进行数据发送和接收机制。
WindowsSockets规范是一套开放的,支持多种协议的Windows操作系统下的网络编程API。
2.Socket接口是TCP/IP网络通信的API。
也就是说,Socket接口规定了许多函数和例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
今天,Socket接口是TCP/IP网络通信最为通用的API之一。
3.C++Builder实用封装技术向程序员提供了两个vcl控件:
ClientSocket,ServerSocket。
这两个控件封装了复杂的WindowSocket函数,其中ClientSocket封装了管理客户端Socket的功能,ServerSocket封装了管理服务器端得Socket的功能。
但是这两个控件本身是不具备有通信的能力,负责通信的是TCustomWinSocket类的子类。
四.需求分析和系统功能描述及软件模块划分,流程图
系统功能描述:
网络聊天的基础是TCP/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__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
ServerSocket1->Port=StrToInt(Edit1->Text);
ServerSocket1->Active=true;
StatusBar1->SimpleText="正在监听客户端的连接状态。
。
。
";
Memo1->Lines->Clear();
Memo2->Lines->Clear();
}
断开(按钮)
//-------------------------------------------------------------
void__fastcallTForm1:
:
Button2Click(TObject*Sender)
{
ServerSocket1->Close();
StatusBar1->SimpleText="已经和客户端断开了连接....";
Memo1->Clear();
Memo2->Clear();
}
发送(按钮)
//-------------------------------------------------------------
void__fastcallTForm1:
:
Button3Click(TObject*Sender)
{
ServerSocket1->Socket->Connections[0]->SendText(Memo2->Text);
Memo2->Clear();
}
群发(按钮)
//-------------------------------------------------------------
void__fastcallTForm1:
:
Button7Click(TObject*Sender)
{for(inti=0;i<=ServerSocket1->Socket->ActiveConnections-1;i++)
{
ServerSocket1->Socket->Connections[i]->SendText(Memo2->Text);
}
}
刷新(按钮)
//-------------------------------------------------------------void__fastcallTForm1:
:
Button6Click(TObject*Sender)
{
Memo2->Clear();
Memo1->Clear();
Memo2->SetFocus();
}
退出(按钮)
//-------------------------------------------------------------
void__fastcallTForm1:
:
Button4Click(TObject*Sender)
{
ServerSocket1->Active=false;
Form1->Close();
}
服务器接受了客户端的请求后触发OnAccept函数
//-------------------------------------------------------------
void__fastcallTForm1:
:
ServerSocket1Accept(TObject*Sender,
TCustomWinSocket*Socket)
{
StatusBar1->SimpleText="有客户端和本服务器取得了连接";
}
服务器收到客户端发来的信息时触发OnClientRead函数
//-------------------------------------------------------------
void__fastcallTForm1:
:
ServerSocket1ClientRead(TObject*Sender,
TCustomWinSocket*Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
StatusBar1->SimpleText="收到客户端信息..";
}
服务器与客户端连接后又断开时触发OnClientDisconnect函数
//---------------------------------------------------------
void__fastcallTForm1:
:
ServerSocket1ClientDisconnect(TObject*Sender,
TCustomWinSocket*Socket)
{
StatusBar1->SimpleText="客户端已经请求断开连接...";
Memo1->Clear();
Memo2->Clear();
}
客户端
客户端界面图
连接(按钮)
//-------------------------------------------------------------
void__fastcallTForm1:
:
Button1Click(TObject*Sender)
{
ClientSocket1->Port=StrToInt(Edit1->Text);
ClientSocket1->Host=Edit2->Text;
ClientSocket1->Active=true;
StatusBar1->SimpleText="连接到服务器..";
Memo1->Clear();
Memo2->Clear();
}
断开(按钮)
//------------------------------------------------------------
void__fastcallTForm1:
:
Button2Click(TObject*Sender)
{
ClientSocket1->Close();
StatusBar1->SimpleText="已经和服务器断开了连接...";
Memo1->Clear();
Memo2->Clear();
}
发送(按钮)
//------------------------------------------------------------
void__fastcallTForm1:
:
Button3Click(TObject*Sender)
{
ClientSocket1->Socket->SendText(Memo2->Text);
Memo2->Clear();
}
刷新(按钮)
//------------------------------------------------------------
void__fastcallTForm1:
:
Button5Click(TObject*Sender)
{
Memo1->Clear();
Memo2->Clear();
Memo2->SetFocus();
}
退出(按钮)
//-------------------------------------------------------------void__fastcallTForm1:
:
Button4Click(TObject*Sender)
{
ClientSocket1->Active=false;
Form1->Close();
}
客户端与服务器端连接又断开后触发OnDisconnect函数
//---------------------------------------------------------
void__fastcallTForm1:
:
ClientSocket1Disconnect(TObject*Sender,
TCustomWinSocket*Socket)
{
StatusBar1->SimpleText="服务器端已经请求断开连接...";}
客户端与服务器端连接成功时触发OnConnect函数
void__fastcallTForm1:
:
ClientSocket1Connect(TObject*Sender,
TCustomWinSocket*Socket)
{
StatusBar1->SimpleText="连接到:
"+Edit2->Text;
Memo1->Lines->Clear();
}
客户端收到服务器发来的信息时触发OnRead函数
//-------------------------------------------------------------
void__fastcallTForm1:
:
ClientSocket1Read(TObject*Sender,
TCustomWinSocket*Socket)
{
Memo1->Lines->Add(ClientSocket1->Socket->ReceiveText());
}
七.软件使用说明
(1)首先设置服务器端得监听端口号。
(2)按下服务器断的监听按钮,服务器端进入监听状态。
(3)客户端设置同样的端口号,并设置回环ip地址:
127.0.0.1
(4)客户端按下连接按钮,时间服务器和客户端的连接。
(5)连接成功后可发送消息。
(可通过屏幕的状态栏查看是否连接成功)
(6)服务器端点击断开按钮后可以重新设置监听端口号。
(7)可以实现多个客户端对服务器端发送信息。
只需要设计同样的端口IP地址即可。
八.参考资料
C++Builder精彩编程实例集锦罗斌中国水利水电出版社
C++Builder经典范例50讲王均李红玲科学出版社
C++Builder6.0时尚编程百例网冠科技机械工业出版社
九.验收时间及验收情况
验收时间:
2009-9-10
验收情况:
实现了目标功能!
十.设计体会
每次的课程设计之前都是感觉无从下手,但每次的结束又会发现学到了好多的东西,这些是很难从课堂上学到的,这中间的过称的确比较艰难,但很充实,特别是所有的目标功能能够实现时,那种喜悦是难以言表的。
网络这门可的课程设计部分,的确让我学到了不少的以前不从注意的东西,学习了一般的基于tcp/ip的网络信息传输工具的一些基本的设计和工作原理,真的是获益良多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 实时 通讯 工具