欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    计算机网络课程设计报告书4542816318.doc

    • 资源ID:2401513       资源大小:353KB        全文页数:22页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络课程设计报告书4542816318.doc

     学 号: 武汉理工大学华夏学院课 程 设 计    题 目计算机网络课程设计系 别信息工程专 业软件技术班 级姓 名成 绩   2011年01月 13 日  课程设计任务书学生姓名: 专业班级: 题 目: 简单的聊天软件(c/s) 目录一、设计目的3二、设计任务3三、时间安排3四、具体设计过程和步骤(以协议验证编程为例)34.1 需求分析34.1.1项目描述34.1.2系统需求44.2套接字介绍与使用44.3 流程分析与设计44.4 项目基本步骤54.4.1创建项目以及基本的包54.4.2创建项目的基本类54.5 编码64.6 系统实施与运行184.6.1服务器启动与关闭窗体视图184.6.2客户端产生视图184.6.3服务器聊天窗口、客户机聊天窗口184.6.4服务器与客户机交互194.6.4 cmd模式telnet服务器进行和交互20五、设计心得体会21六、设计过程中的疑问21七、指导教师评语22一、 设计目的通过本课程设计,培养学生具有C/S或B/S式的网络应用系统的设计和开发以及中小规模组网能力;掌握常用网络开发工具(如VB、VC)的使用,或掌握web开发工具(如ASP等)的方法与网络规划、设计、集成的步骤和方法;使同学们经历网络应用系统开发及网络集成的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识,在实践中培养分析问题和解决问题的能力。并为毕业设计打下坚实的基础。通过分析设计和实现,可以使理论知识得到验证并且能够了解基本网络开发的方法、步骤,细节,提高动手能力。二、 设计任务1. 实现简单的客户端发送信息、服务器端收信息。2. 实现简单的服务器端发送信息、客户端收信息3. 实现客户端请求关闭连接,服务器作出相应4. 编程模拟实现telnet5. 获取主机名和IP地址三、 时间安排01月10日,查阅资料,确定设计题目;01月11日,分析题目,创建工程,准备程序;01月12日,封装代码,上机调试程序;01月13日,提交课程设计报告;四、 具体设计过程和步骤(以协议验证编程为例)4.1 需求分析4.1.1项目描述 在信息网络高速发展的今天,网上聊天已成为了我们每天生活、工作必不可少的一部分,如QQ、飞鸽、UC等聊天工具的普及。聊天工具为我们的生活和学习带来了很多方便,在这里我做了一个简单的网络聊天软件神话聊天室,实现了一些基本的服务器与客户端的相互交流和请求,本项目编写简单,易于移植,交流方便。本项目主要实现的功能是利用网络知识套接字(ip地址+端口号),实现服务器和客户端的基本通信功能,并且服务器可以实现同时与多台客户端通信交流。本项目利用Java知识、借助MyEclipse开发平台,写了一个服务器端和一个客户端,可以将这个客户端移植到别的机器上与本机实现多对一的交流,同时客户端也可以在自己利用远程登陆的方式(开始>运行>cmd>telnet 服务器ip 服务器端口号),与服务器进行交流。4.1.2系统需求1. 问题描述利用Myeclipse平台,设计出简洁, 用户友好的聊天界面及方便灵活的客户端与服务器之间的交流,能完成基本的一对一用户交流、一对多用户交流,客户端与服务器之间的相互请求关闭连接的操作。该系统主要包括服务器端和客户端两部分:服务器端:利用Java知识ServerSocket类定义一个服务器端端口new ServerSocket(int iport),然后不但让服务器端端口产生监听,利用多线程知识定义一个线程类,让每接受到一个监听就给服务器产生一个聊天窗口,直至聊天结束就关闭此窗口。客户端:利用 Java 知识Socket类定义一个客户端 端口new Socket( String ip,int iport),此ip为服务器端主机的ip地址,端口号为服务器端服务器定义的端口号,然后让客户端启动,这样客户端就会就请一次服务器,服务器接受到一个监听就给服务器产生一个与之对应的聊天窗口,两者进行聊天,直至哪一方要求结束聊天就关闭窗体。2. 显示服务器与客户机的ip和主机名利用Java中的getLocalAddress().getHostName()和getInetAddress();3. 项目视图的建立 利用Java SE 知识采用Java中swing包控件,创建一个启动服务器的窗体(见图4)、一个启动客户端的窗体(见图6)、一个服务器端的聊天窗体(见图8)、一个客户端的聊天窗体(见图8)。4.2套接字介绍与使用 多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。套接字简介:套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机的间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程4.3 流程分析与设计启动服务器ServerSocket ss产生服务器端聊天窗口产生监听Socket s=ss.accept()启动客户端输入服务器端主机ip+Porttruefalsetruefalse产生客户端聊天窗口进行相互交流图1 主要流程图4.4 项目基本步骤4.4.1创建项目以及基本的包打开MyEclipse,新建Java project工程,取名为ChatRoom,图2; 在src下新建包edu.huaxia.chatserver、edu.huaxia.chatclient,图3; 图2 图3 4.4.2创建项目的基本类1. 创建启动服务器视图类TcpServeView.java,代码见4.5编码12. 创建线程服务器类TcpSession.java,代码见4.5编码23. 创建服务器端聊天窗口视图类ChatWindowSerevrView.java,代码见4.5编码34. 创建启动客户端视图类ClientView.java,代码见4.5编码45. 创建客户端聊天窗口视图类TcpClient.java,代码见4.5编码54.5 编码1. TcpServeView.java代码:package edu.huaxia.chatserver;import java.aw*;import java.io.IOException;import .ServerSocket;import .Socket;import javax.swing.*;/* * author Thomas *服务器端窗体:开始和停止服务 */public class TcpServerView extends JFrameprivate static final long serialVersionUID = 1L;private ServerSocket ss;private JButton start,stop;public TcpServerView()super("服务器窗体");try ss = new ServerSocket(6666);/给服务器绑定一个端口 catch (IOException e1) e1.printStackTrace();start = new JButton("启动服务器");/开始按钮监听事件>启动服务器start.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) start.setVisible(false);/启动后设置开始按钮不可见/如果停止按钮是不可见时,启动后设置停止按钮可见if (stop.isVisible()=false) stop.setVisible(true);this.start();/调用内部类的start方法/* * 内部类方法,监听一个端口,并产生一个线程 */private void start() try Socket socket=ss.accept();new TcpSession(socket).start();/让线程开启 this.start(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(););stop = new JButton("关闭服务器");stop.setVisible(false);/最初时设置停止按钮不见/停止按钮监听事件>停止服务器stop.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) this.close();/调用内部类的close方法/如果开始按钮是不可见时,启动后设置开始按钮可见if (start.isVisible()=false) start.setVisible(true);/设置停止按钮不可见stop.setVisible(false);/* * 内部类方法,关闭端口 */private void close() try if(ss!=null)/如果端口不为空,就关闭该端口ss.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(););this.add(start);this.add(stop);this.setLayout(null);this.setBackground(Color.LIGHT_GRAY);this.setBounds(150, 150, 300, 300);this.setVisible(true);start.setBounds(100, 75, 100, 50);stop.setBounds(100, 155, 100, 50);public static void main(String args) /主方法,调用自己,产生图形化用户界面new TcpServerView();2. TcpSession.java代码:package edu.huaxia.chatserver;import java.io.*;import .Socket;import edu.huaxia.chatView.ChatWindowServerView;/* * author Thomas *对服务器产生的线程进行处理 */public class TcpSession extends Thread private Socket socket;private BufferedReader br;private PrintStream ps;public TcpSession(Socket s) this.socket = s;try /定义端口的输入输出流br=new BufferedReader(new InputStreamReader(socket.getInputStream();ps=new PrintStream(socket.getOutputStream(); catch (IOException e) e.printStackTrace();/* * 流的关闭方法 */public void close()try if(br!=null) br.close();if(ps!=null) ps.close();if(socket!=null) socket.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/* * 线程的启动方法 */public void run() /产生一个图形化聊天界面ChatWindowServerView cws = new ChatWindowServerView(socket,br,ps);cws.dopost();/调用cws的dopost方法cws.close();/调用cws的close方法cws.dispose();/将这个聊天窗体摧毁this.close();/调用自己关闭流的方法close3. ChatWindowSerevrView.java代码:package edu.huaxia.chatView;import java.io*;import .Socket;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.*;/* * author Thomas *用户聊天窗体 */public class ChatWindowServerView extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L;private JLabel l1,l2,l3,l4;private JPanel p1,p2,p3,p4,p5;private TextArea ta1,ta2;private JButton send,quit;private BufferedReader br;private PrintStream ps;private boolean b=true;/* * 构造器对窗体属性的基本定义 */public ChatWindowServerView(Socket socket,BufferedReader br,PrintStream ps)super("神话聊天室服务器");this.br=br;this.ps=ps;l1 = new JLabel("客户IP:"+socket.getLocalAddress();l3 = new JLabel("客户名字:"+socket.getLocalAddress().getHostName();l2 = new JLabel("主机IP:"+socket.getInetAddress();l4 = new JLabel("主机名字:"+socket.getInetAddress().getHostName();Border b1 = BorderFactory.createTitledBorder("聊天信息显示窗体");Border b2 = BorderFactory.createTitledBorder("发送信息窗体");Border b3 = BorderFactory.createTitledBorder("对方基本信息");Border b4 = BorderFactory.createTitledBorder("本人基本信息");p1 = new JPanel();p1.setBorder(b1);p2 = new JPanel();p2.setBorder(b2);p3 = new JPanel();p3.setBorder(b3);p4 = new JPanel();p4.setBorder(b4);p5 = new JPanel();ta1 = new TextArea(10,47);ta2 = new TextArea(11,67);Font f = new Font("Default",Font.PLAIN,18);ta1.setFont(f);ta1.setForeground(Color.RED);send = new JButton("发送");send.addActionListener(this);/产生监听quit = new JButton("关闭");quit.addActionListener(this);/产生监听this.setLayout(null);this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);p1.add(ta1);p2.add(ta2);p3.add(l1);p3.add(l3);p4.add(l2);p4.add(l4);p5.add(send);p5.add(quit);this.setBounds(100,100, 720, 600);p1.setBackground(Color.gray);p1.setBounds(0, 0, 500, 280);p3.setBackground(Color.white);p3.setBounds(505, 0, 190, 280);l1.setBounds(507, 5, 187, 30);l2.setBounds(507, 37, 187, 30);p2.setBackground(Color.PINK);p2.setBounds(0, 290, 500, 220);p4.setBackground(Color.LIGHT_GRAY);p4.setBounds(505, 290, 190, 220);l2.setBounds(507, 295, 187, 30);l4.setBounds(507, 327, 187, 30);p5.setBounds(0, 520, 500, 40);this.setVisible(true);/* * 对监听事件的处理 */public void actionPerformed(ActionEvent e) /发送按钮事件。当发送文本框的值不为空时,就将信息发送为输出流,同时在信息框中打印出来if(e.getSource().equals(send) String s1=null;s1=ta2.getText().trim();if(!s1.equals("")ta2.setText("");/对时间对象的处理SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date date = new Date();/如果得到的是quit就返回方法 if("quit".equalsIgnoreCase(s1) ta1.append("服务器"+sdf.format(date)+":"+"要求断开连接"); ps.println(""+sdf.format(date)+":"+"要求断开连接"); return; ps.println(""+sdf.format(date)+":"+s1); ta1.append("服务器"+sdf.format(date)+":"+s1+"n"); ps.flush();else if(e.getSource()=quit)/发送按钮事件。将“quit”信息发送为/输出流,同时将b设置为falseps.println("quit");b=false;/* * 接受输入流的信息 */public void dopost()try String s=null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date date = new Date();ps.println(""+sdf.format(date)+":你好,欢迎光临神话聊天室!");while(b)s=br.readLine();if(s!=null|s!="")if("quit".equalsIgnoreCase(s) /若得到的是'quit'就返回ta1.append("客户"+sdf.format(date)+"要求断开连接!n");return;ta1.append("客户"+s+"n"); catch (IOException e) e.printStackTrace();/* * 流的关闭窗体 */public void close()try if(br!=null) br.close();if(ps!=null) ps.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();4. ClientView.java代码:package edu.huaxia.chatclient;import java.awt.*;import java.io.IOException;import .Socket;import .UnknownHostException; /* * author Thomas *启动客户端的窗体 */public class ClientView extends JFrame private static final long serialVersionUID = 1L;private JLabel l0,l1,l2;private JTextField ip,port;private JButton start;public ClientView()super("客户端启动");l0 = new JLabel("套接字信息");l1 = new JLabel("服务器IP:");l2 = new JLabel("服务器port:");ip = new JTextField();port = new JTextField();start = new JButton("产生客户端");/产生监听,实例化内部类start.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) String ip1 = ip.getText();int port1 = Integer.parseInt(port.getText();Socket socket = null;try /定义套接字:ip+端口号socket = new Socket(ip1,port1);TcpClient tc = new TcpClient(socket);tc.post();tc.close();tc.dispose(); catch (UnknownHostException e1) JOptionPane.showMessageDialog(null, "套接字错误!"); catch (IOException e3) JOptionPane.showMessageDialog(null, "套接字错误!");try socket.close(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(););Font font = new Font("华文楷体",Font.PLAIN,18);l0.setFont(font);l0.setForeground(Color.RED);this.add(start);this.add(l0);this.add(l1);this.add(l2);this.add(ip);this.add(port);this.setLayout(null);this.setBackground(Color.LIGHT_GRAY);this.setBounds(150, 150, 300, 300);this.setVisible(true);l0.setBounds(100, 15, 100, 30);l1.setBounds(55, 55, 60, 30);ip.setBounds(135, 55, 100, 30);l2.setBounds(55, 105, 70, 30);port.setBounds(135, 105, 100, 30);start.setBounds(100, 155, 100, 30);public static void main(String args) new ClientView();5. TcpClient.java代码:package edu.huaxia.chatclient;import java.awt.*;import java.io*import .Socket;import .UnknownHostException;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.*;/* * author Thomas * 客户端窗体 */public class TcpClient extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L;private JLabel l1,l2,l3,l4;private JPanel p1,p2,p3,p4,p5;private TextArea ta1,ta2;private JButton send,quit;private BufferedReader br;private PrintStream ps;private Socket socket;private boolean b=true;/* * 客户端窗体的基本属性 */public TcpClient(Socket socket)super("神话聊天室客户端");this.socket = socket;try /定义套接字输入输出流br = new BufferedReader(new InputStreamReader(socket.getInputStream();ps = new PrintStream(socket.getOutputStream();catch (IOException e) e.printStackTrace();l2 = new JLabel("客户IP:"+socket.getLocalAddress();l4 = new JLabel("客户名字:"+socket.getLocalAddress().getHostName();l1 = new JLabel("主机IP:"+socket.getInetAddress();l3 = new JLabel("主机名字:"+socket.getInetAddress().getHostName();Border b1 = BorderFactory.createTitledBorder("聊天信息显示窗体");Border b2 = BorderFactory.createTitledBorder("发送信息窗体");Border b3 = BorderFactory.createTitledBorder("对方基本信息");Border b4 = BorderFactory.createTitledBorder("本人基本信息");p1 = new JPanel();p1.setBorder(b1);p2 = new JPanel();p2.setBorder(b2);p3 = new JPanel();p3.setBorder(b3);p4 = new JPanel();p4.setBorder(b4);p5 = new JPanel();ta1 = new TextArea(10,47);ta2 = new TextArea(11,67);Font f = new Font("Default",Font.PLAIN,18);ta1.setFont(f);ta1.setForeground(Color.RED);send = new JButton("发送");send.addActionListener(this);/产生监听quit = new JButton("关闭");quit.addActionListener(this);/产生监听this.setLayout(null);this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);p1.add(ta1);p2.add(ta2);p3.add(l1);p3.add(l3);p4.add(l2);p4.add(l4);p5.add(send);p5.add(quit);this.setBounds(100,100, 720, 600);p1.setBackground(Color.orange);p1.setBounds(0, 0, 500, 280);p3.setBackground(Color.PINK);p3.setBounds(505, 0, 190, 280);l1.setBounds(507, 5, 187, 30);l2.setBounds(507, 37, 187, 30);p2.setBackground(Color.darkGray);p2.setBounds(0, 290, 500, 220);p4.setBackground(Color.LIGHT_GRAY);p4.setBounds(505, 290, 190, 220);l2.setBounds(507, 295, 187, 30);l4.setBounds(50

    注意事项

    本文(计算机网络课程设计报告书4542816318.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开