《计算机网络实验(共5页).doc》由会员分享,可在线阅读,更多相关《计算机网络实验(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上淮海工学院计算机工程学院实验报告书课 程 名: 计算机网络 题 目: 实验四 综合实验 班 级: Z软件161 学 号: 姓 名: 陈真杰 评语:成绩: 指导教师: 批阅时间: 年 月 日专心-专注-专业一、 实验目的理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。二、 实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。三、 实验步骤1. 服务器端代
2、码如下所示。import java.io.*;import .*;import java.applet.Applet;import java.util.Date;import java.text.SimpleDateFormat;public class Serverpublic static void main(String args) trySimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);/设置日期格式System.out.println(-Server-);ServerSocket server=null;t
3、ryserver=new ServerSocket(80);/创建一个ServerSocket在端口4700监听客户请求catch(Exception e) System.out.println(can not listen to:+e);/出错,打印出错信息Socket socket=null;trysocket=server.accept(); /使用accept()阻塞等待客户请求,有客户 /请求到来则产生一个Socket对象,并继续执行catch(Exception e) System.out.println(Error.+e);/出错,打印出错信息String line;Buffer
4、edReader is=new BufferedReader(new InputStreamReader(socket.getInputStream();/由Socket对象得到输入流,并构造相应的BufferedReader对象PrintWriter os=new PrintWriter(socket.getOutputStream();/由Socket对象得到输出流,并构造PrintWriter对象BufferedReader sin=new BufferedReader(new InputStreamReader(System.in);/由系统标准输入设备构造BufferedReader
5、对象String ret = ;String num = is.readLine().split(,);System.out.println(df.format(new Date()+接收到客户端发送的:+num0+和+num1);ret+=Double.valueOf(num0)+Double.valueOf(num1)+=+(Double.valueOf(num0)+Double.valueOf(num1)+n;ret+=Double.valueOf(num0)+-+Double.valueOf(num1)+=+(Double.valueOf(num0)-Double.valueOf(nu
6、m1)+n;ret+=Double.valueOf(num0)+*+Double.valueOf(num1)+=+(Double.valueOf(num0)*Double.valueOf(num1)+n;ret+=Double.valueOf(num0)+/+Double.valueOf(num1)+=+(Double.valueOf(num0)/Double.valueOf(num1)+n;/在标准输出上打印从客户端读入的字符串System.out.println(df.format(new Date()+向客户端发送:);System.out.println(ret);os.println
7、(ret);/向客户端输出该字符串os.flush();os.close(); /关闭Socket输出流is.close(); /关闭Socket输入流socket.close(); /关闭Socketserver.close(); /关闭ServerSocket catch(Exception e)System.out.println(Error:+e);/出错,打印出错信息2. 客户端代码如下所示。import java.io.*;import .*;import java.util.Date;import java.text.SimpleDateFormat;public class C
8、lient public static void main(String args) trySimpleDateFormat df = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);/设置日期格式Socket socket=new Socket(127.0.0.1,80);BufferedReader sin=new BufferedReader(new InputStreamReader(System.in);/由系统标准输入设备构造BufferedReader对象PrintWriter os=new PrintWriter(socket.getOutp
9、utStream();/由Socket对象得到输出流,并构造PrintWriter对象BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream();/由Socket对象得到输入流,并构造相应的BufferedReader对象System.out.println(-Client-);System.out.print(请输入两个数字:);String readline;readline=sin.readLine(); /从系统标准输入读入一字符串System.out.println(df.for
10、mat(new Date()+向服务器发送:+readline);os.println(readline); /向服务器发送os.flush();System.out.println(df.format(new Date()+接收到服务器发送的:);while(true)String l = is.readLine();if(!l.equals()System.out.println(l);while(!l.equals()System.out.println(l);l = is.readLine();break; /继续循环os.close(); /关闭Socket输出流is.close()
11、; /关闭Socket输入流socket.close(); /关闭Socketcatch(Exception e)System.out.println(出现错误:+e);四、 测试数据与实验结果1. 服务器端:2. 客户端五、 结果分析与实验体会本次实验过程中出现了.ConnectException: Connection refused: connect问题,通过查阅资料发现出现原因可能是:1)端口号被占用:杀死占用端口号(一般为8080)的进程,释放端口;彻底关闭 Tomcat 服务器,或者重新启动项目。2)使用以下命令检查服务器中允许的最大进程数:ulimit -u。如果将此值设置为较低值,例如1024,则使用以下值将其增加到或无限制:ulimit -u 或者ulimit -u无限制 。3)客户端和服务器,它们中的任何一个或两个都不在网络中。发现这些原因都可以导致出现连接被拒绝的情况。而我的是服务器没开,导致客户端找不到服务器。
限制150内