计算机通讯原理课程设计论文.docx
- 文档编号:6062066
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:14
- 大小:390.01KB
计算机通讯原理课程设计论文.docx
《计算机通讯原理课程设计论文.docx》由会员分享,可在线阅读,更多相关《计算机通讯原理课程设计论文.docx(14页珍藏版)》请在冰豆网上搜索。
计算机通讯原理课程设计论文
大连理工大学
计算机通讯原理
课程设计
院系:
计算机科学与技术学院
组员:
2010-11-19
目录
第一部分双机RS-232通讯媒体流环境的建立及多媒体聊天平台的开发
1.双机RS-232通讯
1.1RS-232接口简介
1.1.1接口电气特性………………………………………………………25
1.1.2工作方式……………………………………………………………25
1.2流式数据特点……………………………………………………………26
1.3系统实现原理
1.3.1双机RS-232文字通信…………………………………………………26
1.3.2双机RS-232文件通信………………………………………………26
1.4实验结果……………………………………………………………………27
2.多媒体聊天平台的开发
2.1实验原理……………………………………………………………………35
2.2核心代码……………………………………………………………………35
2.3试验截图……………………………………………………………………37
2.4成员与分工情况……………………………………………………………39
第二部分心得体会及参考文献
3.参考文献………………………………………………………………………46
第一部分双机RS-232通讯
媒体流环境的建立及多媒体聊天平台的开发
1.双机RS-232通讯
1.1RS-232接口简介
RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(recommededstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969)。
它规定连接电缆和机械、电气特性、信号功能及传送过程。
通常RS-232接口以9个引脚(DB-9)或是25个引脚(DB-25)的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。
1.1.1接口电气特性
EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:
逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
DB9接口针脚定义:
1DCD载波检测
2RXD接收数据
3TXD发送数据
4DTR数据终端准备好
5GND信号接地
6DSR数据准备好
7RTS请求发送
8CTS清除发送
9RI振铃指示
1.1.2工作方式
串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。
数据传输率:
数据传输率是指单位时间内传输的信息量,可用比特率和波特率来表示。
(1)比特率:
比特率是指每秒传输的二进制位数,用bps(bit/s)表示。
(2)波特率,波特率是指每秒传输的符号数,若每个符号所含的信息量为1比特,则波特率等于比特率。
在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0”,所以每个符号所含的信息量刚好为1比特,因此在计算机通信中,常将比特率称为波特率,即:
1波特(B)=1比特(bit)=1位/秒(1bps)计算机中常用的波特率是:
110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可达56Kbps。
1.2流式数据特点
流式数据,顾名思义,想连续的流水一样,无头无尾。
连续的比特流,不能确定数据的开始和结束处。
从数据的缓冲区中读到连续的数据,但是不能确定这是发送方发送的所有数据。
对于无标识、无类别区分的数据,采用流的方式发送便会产生错误,只是处理时间上有一定的延迟;然而对于有标志、有类别区分的数据,如果不加额外处理,将会导致大量的丢数据。
1.3系统实现原理
为解决丢数据问题,本系统增加额外的组包过程,具体做法如下。
首先,在发送端,需要设定标志,为每一个包设置一个其实和结束标志。
其次,在接收端,开辟一个流数据的就收缓冲区,将所有从串口接收到的数据不做任何处理,先堆入缓冲区。
使用KMP字符串匹配算法,找到包的开始及结束位置,使用GetValid-Packet()方法得到有效的包,再交给上层处理程序处理。
这样做,防止产生接收方只收到数据的首部,在数据未收完整前,便开始处理数据,使得后继的数据因没有起始标志而被舍弃,而被处理部分数据又不完整。
1.3.1双机RS-232文字通信
(1)包格式
发送文字
SerialType_Stringctr_signaldata
11n(字节数)
(2)发送接收处理
发送方:
从界面的输入框中读取文字,构建包调用WriteCom()方法,将信息通过串口发送出去,其中data中的数据仅为文字,无任何控制及标志信息。
接收方:
接收到数据后调用GetValidPacket()方法,当得到完整的数据包的时候,再判断数据包的ctr_signal是否为文字包标志,如果是,将文字做字符集的变换,还原成宽字符集,然后显示在接收方的文本框中。
1.3.2双机RS-232文件通信
(1)包格式
发送文件
SerialType_Stringctr_signalfile_name_lenthfile_namefile_text
114mk(字节数)
其中file_name_lenth为一个DWORD数据,表示file_name长度。
(2)发送接收处理
发送方:
新建立一个文件对象new_send_file,产生MFC打开文件对话框,让用户选择要发送的文件,当用户点击确定后,将文件的路径传递给new_send_file,用new_send_file打开该文件,并将文件读入缓冲区。
接下来按约定的格式构建发送数据包,最后调用WriteCom()方法,将信息通过串口发送出去。
接收方:
接收到数据后调用GetValidPacket()方法,当得到完整的数据包的时候,再判断数据包的ctr_signal是否为文字包标志,如果是,从file_name_lenth中取出文件的名字长度,从file_name开始,读取文件名,用MessageBox()提示用户,“接到对方发来的**.**文件,是否保存?
”,当用户点击“是”,新建文件对象new_receive_file,产生MFC保存文件对话框,让用户选择文件保存的路径及新的文件名(默认填充为对方发送文件的原名),将这两个信息传入new_rece-ive_file,使用new_receive_file创建新的文件,将得到的文件信息写入文件。
1.4实验结果
为了方便用户的使用,实现中加入了对串口设备的枚举,以及对串口的波特率的设置。
图4-1枚举串口示意图
图4-2选择波特率示意图
实现了双机RS-232文字及文件通信,但是文件传输大小受限。
下面是实现及测试的截图。
图4-3发送文字示意图
图4-4接收文字示意图
图4-5发送文件示意图
图4-6接收方接到文件提示示意图
图4-7选择接收并保存
图4-8修改接收文件名
图4-9打开接收文件
2.多媒体聊天平台的开发
2.1基本原理
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel)。
该模式的建立基于以下两点:
1、非对等作用;2、通信完全是异步的。
客户机/服务器模式在操作过程中采取的是主动请示方式:
首先服务器方要先启动,并根据请示提供相应服务:
(过程如下):
打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。
然后等待客户请求到达该端口。
接收到重复服务请求,处理该请求并发送应答信号。
返回第二步,等待另一客户请求关闭服务器。
客户方:
打开一通信通道,并连接到服务器所在主机的特定端口。
向服务器发送服务请求报文,等待并接收应答;继续提出请求……
请求结束后关闭通信通道并终止。
2.2核心代码
发送端文件传输:
voidCFiletranDlg:
:
OnButtonSendFile()
{
CFileDialogdlg(true);
CStringip;
m_YourIp.GetWindowText(ip);
CStringtitle="请选择要发送的文件";
dlg.m_ofn.lpstrTitle=title;//标题条
if(dlg.DoModal()==IDOK)
{
GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(true);
m_fileName=dlg.GetPathName();
GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_SHOW);
pThreadSendFile=:
:
AfxBeginThread(_SendFileThread,this);}
}
发送消息:
voidCFiletranDlg:
:
OnButtonSendmsg()
{
UpdateData(true);
message=m_MsgSend;
if(message.GetLength()==0)return;
:
:
AfxBeginThread(_SendMsgThread,this);
m_MsgSend=_T("");
UpdateData(false);
CStringsengtext;
SYSTEMTIMEtm;
CStringtime;
GetLocalTime(&tm);
time.Format(_T("%d年%d月%d日%d:
%02.2d"),tm.wYear,tm.wMonth,tm.wDay,tm.wHour,tm.wMinute);
sengtext="我"+time+"\r\n";
sengtext+=message;
sengtext+="\r\n\r\n";
DWORDdwSel=m_RevEdit.GetSel();
m_RevEdit.SetSel(dwSel);
m_RevEdit.ReplaceSel(sengtext);
}
接收端处理:
intCFiletranDlg:
:
ReceiveFileMsg(CSocket&recSo,SOCKADDR_IN&client)
{
SYSTEMTIMEtm;
CStringtime;
CStringmsg;
if(StopServer==true)return-1;
if(m_type=='F')
{
SaveYourFile(recSo,client);
}
elseif(m_type=='M')//信息
{
GetLocalTime(&tm);
time.Format(_T("%d年%d月%d日%d:
%02.2d"),tm.wYear,tm.wMonth,tm.wDay,tm.wHour,tm.wMinute);
msg="对方"+time+"\r\n";
charbuff[1000]={0};
intret=0;
for(;;)
{
ret=recSo.Receive(buff,1000);
if(ret==0)
break;
msg+=buff;
}
msg+="\r\n\r\n";
DWORDdwSel=m_RevEdit.GetSel();
m_RevEdit.SetSel(dwSel);
m_RevEdit.ReplaceSel(msg);
}
recSo.Close();
return0;
}
2.3实验截图
输入IP建立连接:
图1消息发送
本设计将接收消息的EDIT设置成了不可输入的,且有滚动条显示。
文件发送可以发送除文件夹以外的其他文件
文件传送的过程中会显示传送的进度,当然如果文件很小的话,是很难看清楚的,因为传送过程一闪就过去了
3.参考文献
【1】《微型计算机技术及应用》(第四版)戴梅萼史嘉权编著,清华大学出版社
【2】《微型计算机原理及应用》(第三版)郑学坚等编著,清华大学出版社
【3】《深入浅出MFC》(第二版)候俊杰编著,华中科技大学出版社
【4】《VisualC++开发入门与编程实践》屈磊李媛媛编著,电子工业出版社
【5】《C++Primer中文版》(第四版)(美)StanleyB.LippmanBarbaraE.MooJoséeLaJoie著,李师贤等译,人民邮电出版社
【6】《精通WindowsSockets网络开发——基于VisualC++实现》孙海民编著,人民邮电出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 通讯 原理 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)