ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:20.79KB ,
资源ID:9208785      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9208785.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于UDP的网络日期计算服务系统.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于UDP的网络日期计算服务系统.docx

1、基于UDP的网络日期计算服务系统西安建筑科技大学华清学院计算机网络课程设计报告专业班级: 姓 名: 学 号: 指导教师: 2012年 1 月 10 日目 录一、 引言3二、 基于TCP的程序设计3三、 基于UDP的程序设计四、 基于UDP的网络日期计算服务系统9五、 心得体会11一、引言 本学期我们学习了计算机网络自顶向下方法这门课程,在这门课程中,我们将因特网分成应用层,运输层,网络层,链路层,物理层这五个层次进行一一学习。其中运输层位于应用层和网络层之间,是分层的网络体系结构的重要部分。该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。运输层协议为运行在不同主机上的应用

2、进程之间提供了逻辑通信功能。网络应用程序可以使用多种运输层协议。例如:因特网有两种协议,即TCP和UDP,这两种协议都能为其调用的应用程序提供一组不同的运输层服务。计算机网络日期计算系统是基于UDP协议的,二、基于TCP的程序设计1.基本原理:TCP是面向连接的可靠的传输层协议。它支持在并不可靠的网络上实现面向链接的可靠的数据传输。1.1 特点:(1)三次握手:建立可靠连接。(2)端口号:多路复用。(3)完整性校验:差错检测。(4)确认机制:应答接受。(5)序列号:丢失检测,乱序重排。(6)窗口机制:流量控制,拥塞控制。2.程序调试遇到的问题及解决2.1错误调试:由于服务器端可以不带选项进行启

3、动,所以对服务器端的错误调试主要是带错误选项的调试;而客户端的错误调试包括不带选项启动、带不正确的端口号或者主机名启动,以及服务器为启动时启动客户端。 (1)服务器端选项错误: 客户端不带选项:客户端启动时必须带选项(服务器端IP地址或者主机名、端口号),如果不带选项启动则会出错并终止程序。 服务器未启动时,启动客户端:如果未启动服务器时就启动客户端,将不能正确连接到服务器端。 客户端端口号或主机名不正确:如果服务器端已经启动(服务器端IP地址为动态分配IP地址,端口号为“”),但是客户端启动时端口号、服务器IP地址或主机名有一个不正确将不能正确连接到服务器端。 (2) 带正确选项的测试: 以

4、默认主机号名和端口号启动服务器:假设服务器端IP地址为“192.168.1.101”,端口号为“2345”。如果客户端有到服务器端的连接,则在客户端会显示连接信息,信息中包括客户端的IP地址。由于这里是在同一台主机上,则这里将显示相应的客户端IP地址,但前提是服务器端不是以“192.168.1.101”为地址启动,而是相应的服务器端所在主机的IP地址或者主机名为地址来启动。启动服务器端后,以正确的服务器端IP地址和端口号启动客户端,这时将在客户端显示连接信息,并显示来自服务器端的相应=A。而服务器端的连接信息则显示IP地址,端口号及即等于 A。 带选项启动服务器:服务器端也可以以指定选项的方式

5、启动, 2.2程序:Server:package niuchunlu;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import .ServerSocket;import .Socket;public class TCPServer public static void main(String argv) throws ExceptionString clientSentence;String capitalizedSentence;ServerSoc

6、ket welcomeSocket = new ServerSocket(2345);System.out.println(服务器正常启动);while(true) Socket connectionSocket = welcomeSocket.accept();BufferedReader inFromClient =new BufferedReader(newInputStreamReader(connectionSocket.getInputStream();DataOutputStream outToClient =new DataOutputStream(connectionSock

7、et.getOutputStream();clientSentence = inFromClient.readLine();capitalizedSentence = clientSentence.toUpperCase() + n;outToClient.writeBytes(capitalizedSentence);Client: package niuchunlu;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import .Socket;pub

8、lic class TCPClient public static void main(String argv) throws Exception String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in); Socket clientSocket = new Socket(127.0.0.1, 2345); DataOutputStream outToServer = new DataOutputStream(

9、clientSocket.getOutputStream(); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + n); modifiedSentence = inFromServer.readLine(); System.out.println(FROM SERVER: + modifiedSentence

10、); clientSocket.close(); 三、基于UDP的程序设计1.基本原理:UDP是无连接的传输协议,主要用于支持在较可靠的链路上的数据传输,或用于对延迟较敏感的应用。实现简单,资源占用少,实时性强,适用于可靠性高的网络和延迟敏感的应用。2.特点:(1)记录端口信息。(2)非连接的传送特性。(3)可以降低对计算机资源的需求。(4)不必进行数据完整性的检测(不可靠传输)。(5)适用于多点传送或广播传送等一对多的传送方式。2.程序调试遇到的问题及解决2.1错误调试:2.2程序:Server:package socket;import java.io.DataInputStream;im

11、port java.io.DataOutputStream;import java.io.IOException;import .InetAddress;import .ServerSocket;import .Socket;public class Server public static void main(String args) ServerSocket server=null;DataInputStream din=null;DataOutputStream dout=null;try server=new ServerSocket(2000);/ 定义服务器端的接受对象,并指定接收

12、端口 /* * 端口(Port):使我们解析输入数据依赖的标记。 */ System.out.println(服务器启动.); while(true) Socket sc=server.accept(); /获得来自客户端的IPInetAddress ip=sc.getInetAddress();/通过socket对象得到客户端IPSystem.out.println(收到来自IP:+ip+发送来的消息:);int port =sc.getPort();/通过socket对像得到客户端发送这条消息的端口 System.out.println(客户端端口:+port); din=new Data

13、InputStream(sc.getInputStream(); String mes=din.readUTF(); System.out.println(mes); / 发送回执消息 dout=new DataOutputStream(sc.getOutputStream(); dout.writeUTF(服务器收到了); try if(din!=null) din.close(); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); try if(dout!=null) dout.close(

14、); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); try if(sc!=null) sc.close(); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); Client:package socket;import java.io.Data

15、InputStream;import java.io.DataOutputStream;import java.io.IOException;import .Socket;import .UnknownHostException;import javax.swing.JOptionPane;public class Client public static void main(String args) Socket sc=null; String mes=JOptionPane.showInputDialog(输入发送消息); DataOutputStream dout=null; DataI

16、nputStream din=null; try /捕获异常情况sc=new Socket(169.254.74.168,2000);/ 指定发送消息的Socket对象,dout=new DataOutputStream(sc.getOutputStream();/指定流对象对socket对象指向的服务器进行连接通道 dout.writeUTF(mes);/发送消息 /接收回执消息 din=new DataInputStream(sc.getInputStream(); String getMes=din.readUTF(); System.out.println(服务器回执消息:+getMe

17、s); catch (UnknownHostException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); finally try if(dout!=null) dout.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); try if(sc!=null

18、) sc.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 四、基于UDP的网络日期计算服务系统1.系统任务描述:客户端可以向服务器查询日期。(1)当前的日期和时间(2)C给出任意一天,S返回距离现在多少天。2.协议描述网络日期计算服务系统是基于UDP协议的,UDP是无连接的传输协议,主要用于支持在较可靠的链路上的数据传输,或用于对延迟较敏感的应用。实现简单,资源占用少,实时性强,适用于可靠性高的网络和延迟敏感的应用。3.基本原理3.1为使程序美观,使用了JFrame和不同

19、的LayoutManager(比如FlowLayout、BorderLayout、GridLayout)进行布局设计,同时限定了窗体的大小;3.2为将文本框中的字符串转换为日期编写了toDate()方法,其中包括日期输入错误操作的日期时被复用的异常处理;3.3 因为要实现键盘的输入操作,将操作时使用的几个方法(pressButton 等)封装起来,使其可供监听器调为能通过键盘操作,注册了键盘监听器;3.4 为判断当前是否处于输入状态(否则处于程序提示状态),使用布尔型属性inputing标记当前状态,当其为false时,向文本框中输入字符会先清空文本框;3.5 为实现确定按钮操作、使用了But

20、tonActionListener方法来监听输入结束或者输入正确,并计算出所输入的日期和当前日期之间的差数。3.6 考虑到DateCalaculator类与客户端和服务端之间的调用关系设计了DateCalaculator类的一些get和set的方法,并通过这些方法的调用来实现参数之间的传递,由此实现了基于UDP的C/S 日期服务的计算。4.程序调试遇到的问题及解决4.1错误调试:4.1.14.2程序:Server:package dateCalcutor;import java.io.IOException;import java.io.ObjectInputStream;import jav

21、a.io.ObjectOutputStream;import .InetAddress;import .ServerSocket;import .Socket;public class Server public static void main(String args) ServerSocket server=null; ObjectInputStream din=null; ObjectOutputStream dout=null; try server=new ServerSocket(2222);/ 定义服务器端的接受对象,并指定接收端口 System.out.println(服务器启

22、动.); while(true) Socket sc=server.accept();/ 会造成线程阻塞 /获得来自客户端的IPInetAddress ip=sc.getInetAddress();/通过socket对象得到客户端IPSystem.out.println(收到来自IP:+ip+发送来的消息:);int port =sc.getPort();/通过socket对像得到客户端发送这条消息的端口 System.out.println(客户端端口:+port); din=new ObjectInputStream(sc.getInputStream(); /DateCalculator

23、 dc=(DateCalculator)din.readObject(); /System.out.println(dc); try Thread.sleep(6000); catch (InterruptedException e1) / TODO Auto-generated catch block e1.printStackTrace(); / 发送回执消息 dout=new ObjectOutputStream(sc.getOutputStream(); /dout.writeObject(dc); try if(din!=null) din.close(); catch (Excep

24、tion e) / TODO Auto-generated catch block e.printStackTrace(); try if(dout!=null) dout.close(); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); try if(sc!=null) sc.close(); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace();Client:package dateCalcuto

25、r;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import .Socket;import .UnknownHostException;public class Client private static DateCalculator dc = new DateCalculator() ; public static void main(String args) Socket sc=null; ObjectOutputStream dout=null;

26、 ObjectInputStream din=null; /try /sc=new Socket(192.168.3.42,2222);/ 指定发送消息的Socket对象, /dout=new ObjectOutputStream(sc.getOutputStream();/指定流对象对socket对象指向的服务器进行连接通道 /dc.getResult();/接收回执消息 /din=new ObjectInputStream(sc.getInputStream(); /DateCalculator getDate=(DateCalculator)din.readObject(); /Syst

27、em.out.println(服务器回执消息:n+(getDate.getResultdate(); /getDate.getResultdate().setText(getDate+); / /catch (UnknownHostException e) / TODO Auto-generated catch block /e.printStackTrace(); / /catch (ClassNotFoundException e) / TODO Auto-generated catch block /e.printStackTrace(); / /catch (IOException e

28、) / TODO Auto-generated catch block /e.printStackTrace(); / /finally /try / if(dout!=null) / dout.close(); / catch (IOException e) / TODO Auto-generated catch block / e.printStackTrace(); / /try /if(sc!=null) /sc.close(); / /catch (IOException e) / / TODO Auto-generated catch block /e.printStackTrace(); /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1