网络通信课程设计Word下载.docx
- 文档编号:8025524
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:13
- 大小:165.33KB
网络通信课程设计Word下载.docx
《网络通信课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《网络通信课程设计Word下载.docx(13页珍藏版)》请在冰点文库上搜索。
(2)表示层:
这一层的主要功能是定义数据格式及加密。
例如,FTP允许你选择以二进制或ASII格式传输。
如果选择二进制,那么发送方和接收方不改变文件的内容。
如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。
在接收方将标准的ASII转换成接收方计算机的字符集。
(3)会话层:
他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。
(4)传输层:
这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。
(5)网络层:
这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。
为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。
(6)数据链路层:
他定义了在单个链路上如何传输数据。
这些协议与被讨论的歌种介质有关。
(7)物理层:
OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。
连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。
物理层常用多个规范完成对所有细节的定义。
三.网络通信技术
计算机网络就是将分散的计算机通过通信线路有机地结合在一起,达到相互通信,实现软、硬件资源共享的综合系统。
网络是计算机的一个群体,是由多台计算机组成的,这些计算机是通过一定的通信介质互连在一起的,使得彼此间能够交换信息。
通信技术是一种以数据通信形式出现,在计算机与计算机之间或计算机与终端设备之间进行信息传递的方式。
它是现代计算机技术与通信技术相融合的产物,在军队指挥自动化系统、武器控制系统、信息处理系统、决策分析系统、情报检索系统以及办公自动化系统等领域得到了广泛应用。
特点:
通信技术跨电子、计算机专业,所修课程兼有两者的特点,需要较好的数学、物理基础以及较强的动手应用能力。
四.网络通信的实现
1.客户端的实现
(1)首先启动VisualC++6.0,利用MFCAppWizard[EXE]建立一个新的MFC工程,工程名为tcpclient,在MFCAppWizardStep1的时候选择Dialogbased即基于对话框,在Step4时勾选WindowsSockets选项,其他默认值下一步。
(2)客户端主要分为三个窗口,第一个是连接窗口,需要输入连接到服务器的相关设置信息;
第二个是聊天信息显示窗口,该窗口显示登录服务器以来发送和接收到的消息;
第三个是消息编辑发送窗口,需要输入你要发送的信息内容并发送。
(单击连接服务器按钮时的处理网络连接的函数。
代码设置如下:
voidCTcpclientDlg:
:
Onconnet()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(clconect)clconect.Close();
CStringipstr,portstr;
intport;
GetDlgItemText(IDC_EDIT1,ipstr);
GetDlgItemText(IDC_EDIT2,portstr);
GetDlgItemText(IDC_EDIT5,clientname);
portstr.TrimLeft();
portstr.TrimRight();
port=atoi(portstr);
if(port>
0&
&
port<
9999){
clconect.Create();
//cslisten.Bind(port);
if(clconect.Connect(ipstr,port))
{
clconect.setp(this);
CWnd*cw=GetDlgItem(IDC_EDIT1);
cw->
EnableWindow(false);
cw=GetDlgItem(IDC_EDIT2);
cw=GetDlgItem(IDC_connet);
cw=GetDlgItem(IDC_EDIT5);
SetDlgItemText(IDC_EDIT3,"
已设名字"
+clientname+"
\r\n连接服务器成功"
);
CStringenterinfo=clientname+"
进入聊天室"
;
intlen=enterinfo.GetLength();
clconect.Send(enterinfo,len);
}
else{
clconect.Close();
MessageBox("
连接失败,请检查IP与端口是否与服务器一致!
或者服务器没打开"
"
连接错误"
MB_ICONERROR);
}
else{
MessageBox("
端口或IP输入有误,请重新输入"
}
设计步骤:
①创建字符串ipstr(保存IP),portstr(保存端口),clientname(用户名),整型port(端口号)。
②利用GetDlgItemText将各个编辑框中的信息赋给相应的变量。
③监视端口号和IP格式并设置相应错误提示(如下图)。
连接错误提示
端口或IP错误提示
④创建套接字clconect,设置成功创建后相关控件为只读。
⑤设置建立连接后相应提示。
(5)接下来就是对话框中的发送(回车)按钮的函数,代码设置如下:
Onsend()
CStringstr;
GetDlgItemText(IDC_EDIT4,str);
str=clientname+"
"
+str;
intlen=str.GetLength();
if(clconect.Send(str,len)>
1)SetDlgItemText(IDC_EDIT4,"
定义字符串str用于保存输入的消息,调整格式后使用CSocket的操作函数send将消息发送到服务器。
(6)要显示客户端接收到来自服务器其他用户的信息,代码设置如下:
onrev()
CStringstr,str1;
charss[256];
for(intj=0;
j<
256;
j++)ss[j]='
\0'
clconect.Receive(ss,256);
if(ss!
="
)
str.Format("
%s"
ss);
GetDlgItemText(IDC_EDIT3,str1);
str=str1+"
\r\n"
SetDlgItemText(IDC_EDIT3,str);
CEdit*ce=((CEdit*)GetDlgItem(IDC_EDIT3));
ce->
LineScroll(ce->
GetLineCount()-1);
①创建字符串str、str1,字符数组ss。
②接受来自服务器套接字的信息数据保存到ss中,调整格式后将其打印到消息区。
(7)当与服务器断开连接时弹出警告,如下图:
失去连接提示
oncl()
MessageBox("
失去连接或者找不到服务器"
CWnd*cw=GetDlgItem(IDC_EDIT1);
cw->
EnableWindow(true);
cw=GetDlgItem(IDC_EDIT2);
cw=GetDlgItem(IDC_connet);
cw=GetDlgItem(IDC_EDIT5);
当失去与服务器的连接后,重新将连接服务器设置编辑框启用等待下次连接。
(8)在退出程序时的提示,如下图:
退出确认
OnClose()
intconfirm=MessageBox("
确定退出吗"
请确定"
MB_YESNO|MB_ICONQUESTION);
if(confirm==IDYES){
CStringenterinfo=clientname+"
退出了聊天室"
intlen=enterinfo.GetLength();
clconect.Send(enterinfo,len);
CDialog:
OnClose();
①当退出程序时,弹出确认对话框。
②当选择“是”时,将用户退出信息发送至服务器并关闭对话框。
2.服务端的实现
(1)和客户端一样,仍然建立一个基于对话框的工程,工程名为tcpserver,同样,要在Step4时勾选WindowsSockets选项。
其他默认下一步。
(2)客户端主要分为三个窗口,第一个是服务器信息设置窗口,需要输入服务器的相关设置信息;
第二个是聊天信息显示窗口,该窗口显示启动服务器以来发送和接收到的消息;
新建一个对话框,并添加各种控件。
单击启动服务器按钮时的处理网络连接的函数。
voidCTcpseverDlg:
Onlisten()
//Beep(2000,100);
intport;
GetDlgItemText(IDC_EDIT3,ipstr);
severname=ipstr;
GetDlgItemText(IDC_EDIT4,portstr);
if(cslisten.Create(port)){
//cslisten.Bind(port);
cslisten.Listen();
cslisten.setp(this,csnum);
CWnd*cw=GetDlgItem(IDC_EDIT3);
cw=GetDlgItem(IDC_EDIT4);
cw=GetDlgItem(IDC_listen);
cw=GetDlgItem(IDC_EDIT1);
SetWindowText("
服务器名:
+severname+"
\r\n等待用户连接,监听端口:
+portstr+"
..."
设置监听端口失败,端口可能被其它程序占用"
cslisten.Close();
端口输入有误,请重新输入"
}
①创建字符串ipstr(保存IP),portstr(保存端口),整型port(端口号)。
③监视端口号和IP格式并设置相应错误提示
④设置建立连接后相应提示。
CStringstr,history;
GetDlgItemText(IDC_EDIT1,history);
GetDlgItemText(IDC_EDIT2,str);
str=severname+"
intsended;
for(inti=1;
i<
=csnum;
i++)if(csrev[i])
if(sended=csrev[i].Send(str,len)){
SetDlgItemText(IDC_EDIT2,"
SetDlgItemText(IDC_EDIT1,history+"
+str);
CEdit*ce=((CEdit*)GetDlgItem(IDC_EDIT1));
ce->
定义字符串str用于保存输入的消息,调整格式后使用CSocket的操作函数send将消息发送到各个客户端。
(6)要显示服务器接收到来自客户端其他用户的信息,代码设置如下:
onrev(intmynum)
inti;
charss[100];
100;
csrev[mynum].Receive(ss,100);
str.Format("
for(i=1;
i++)if(csrev[i])
if(csrev[i])csrev[i].Send(str,100);
GetDlgItemText(IDC_EDIT1,str1);
str=str1+"
SetDlgItemText(IDC_EDIT1,str);
CEdit*ce=((CEdit*)GetDlgItem(IDC_EDIT1));
ce->
(7)当有新用户进入时,显示“XXX进入”。
代码如下:
onac()
CStringstr1,str;
GetDlgItemText(IDC_EDIT1,str1);
CStringstr2="
\r\n进入"
str=str1+str2;
SetDlgItemText(IDC_EDIT1,str);
cslisten.Accept(csrev[++csnum]);
csrev[csnum].setp(this,csnum);
CStringstr="
服务器即将退出"
intconfirm=MessageBox("
确定退出服务器?
所有用户都将断开"
intlen=str.GetLength();
for(inti=1;
i++)if(csrev[i])csrev[i].Send(str,len);
str=severname+"
退出,与服务器连接已断开"
len=str.GetLength();
for(i=1;
②当选择“是”时,将服务器关闭信息发送至各个客户端并关闭对话框。
3.程序运行结果
五.小结
通过这次课程设计,我明白了在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。
在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。
在程序编写中,我认识到软件要有简便的界面,良好的程序风格,完备的文挡。
拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。
做完这次设计之后,我对网络通信有了更深刻的了解,并且有了全新的认识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 通信 课程设计