青岛农业大学 理学与信息科学学院
计算机网络综合实习报告
设 计 题 目 实现一个一对一的聊天程序
学生专业班级
学生姓名(学号)
指 导 教 师
完 成 时 间
设 计 地 点
年 月 日
目 录
一.实验目的及实验环境 ..................................................... 1
1.实验目的 ............................................................ 1 2.实验环境 ............................................................ 1 二. 实验内容 ............................................................. 1
1.设计概要 ............................................................ 2 2.功能要求 ............................................................ 2 3.功能设计 ............................................................ 3
1)流程图 .......................................................... 3 2)功能实现 ........................................................ 3
四.测试数据及运行结果 .................................................... 4 五. 实验总结 ............................................................. 5 六. 主要参考文献 ......................................................... 6 七.附录(所有代码) ...................................................... 7
一.实验目的及实验环境
1.实验目的
《计算机网络》是一门理论性、应用性、实践性比较强的课程。学生只有通过实践,才能理解和掌握计算机网络与通信的有关基本概念、基本原理;通过实践,培养学生的实际动手能力,理论联系实际的能力,综合应用能力,从而培养学生的创新能力。 《计算机网络综合实习》是学习完《计算机网络》课程后进行的一次全面的综合实习,是本专业实践性重要环节之一。本次实习从原理和实践的角度,在计算机上编程模拟实现计算机网络的基本协议,或者架设一个小型局域网并对其进行相应配置。通过本次实习,使学生对计算机网络的基本概念和基本原理有更深入的理解与掌握,同时进一步提高学生的动手能力及解决实际问题的能力。
2.实验环境
本软件采用Java语言编写,本程序基于java和MyEclipse Java Enterprise开发环境,可以在一般的装有windows系统的主机上运行。而网络传输方面采用TCP/IP网络传输协议。
二.实验内容
实现一个一对一的聊天程序。其基本过程如下:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以分别部署在两台电脑上。
三.方案设计
1
1.设计概要
(1)本软件客户端与用户共用一段程序。客户端编译运行后,在窗口选择----侦听。用户编译运行后,在窗口选择----连接。 (2)本软件实现的功能有:
1)允许服务器侦听客户端,客户端连接到服务器 2)允许服务区与客户端之间进行聊天; 3)允许服务器与客户端更改背景颜色; 4)允许服务器与客户端更改字体颜色; 5)服务器与客户端时,会显示内容发送时间;
6)允许服务器与客户端用鼠标点击“发送”,按ENTER键均可发送内容 7)允许服务器与客户端用鼠标点击关闭时关闭聊天窗口
2.功能要求
(1)在服务器端和客户端分别创建一个套接字对象,通过输入输出流连接在一起。套接字调用close()方法关闭双方的套接字连接。
(2)使用多线程处理套接字连接,把服务器端或客户端读取的数据放在一个单独的线程中去进行,防止服务器端或客户端读取数据可能引起的堵塞。服务器端收到一个客户的套接字后,应该启动一个专门为该客户服务的线程。
(3)成功连接后,在图形界面中用户可以根据自己的需要进行不同的操作,如:群聊天、和某一个用户单独聊天(可加入生动的表情描述)、发送文件等。 在界面中会显示用户的聊天记录。 (4)登录功能.
(5)客户可以通过服务器转发,实现一对一和多对多聊天. (6)实现呼叫功能.
(7)客户端程序应该可以实时显示目前其它用户的状态.
2
3.功能设计
1)流程图 服务器进程 像操作系统注 册服务 ServreSocket(port) Serverocket.accept() 等待客户连接, 返回 如果收到客户 连接请求, 就返 Socket 交换程序 回 Socket 对象, OutputStream 表示建立了与 IutputStream 客户的链接 Socket.close()
断开连接 客户进程 Socket(host,port) OutputStream IutputStream Socket.close() 请求与服务器连接,Socket对象创建好,表示连接成功。 断开连接 服务器与客户利用ServerSocket和Socket来通信 2)功能实现
(1)Socket socket = new Socket(String host,int port);客户端创建Socket对象,host是服务器端的IP地址,port是一个端口号,该对象用于连接服务器。
(2)BufferedReader br=new BufferedReader
(new InputStreamReader(socket.getInputStream())); 创建一个使用默认大小输入缓冲区的缓冲字符输入流。该输入流的指向是一个Reader流,Reader流将数据读入缓冲区,BufferedReader再从缓冲区中读取数据。InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。getInputStream()获取字节输入流。
(3)PrintStream ps = new PrintStream(socket.getOutputStream());创建新的打印流,PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。
(4)File file = getFile();调用getFile()函数返回一个file的的路径,提示用户输入一个路径,判断是否存在该文件, 如果输入非法给予提示, 重新输入。
(5)ps.println(file.getName()); ps.println(file.length());将文件名和大小发送到服务端。 (6)String msg = br.readLine();if(\已存在\ 接收服务器发送回来的是否
3