《计算机网络实验》实验报告软(共7页).doc
精选优质文档-倾情为你奉上浙江大学城市学院实验报告课程名称 计算机网络实验 实验项目名称 实验六 传输层网络编程 学生姓名 沈小明 专业班级 计算0904 学号 实验成绩 指导老师(签名 ) 日期 2011-12-13 一. 实验目的和要求1. 通过实现使用Java Socket进行通信的UDP客户端和服务器来获得关于使用Java Socket网络编程的经验;2. 通过实现使用Java Socket进行通信的TCP客户端和服务器来获得关于使用Java Socket网络编程的经验。二. 实验内容、原理及实验结果与分析1. UDP编程(参考电子讲义“网络编程参考资料-传输层.pdf”及教材“第2章 Socket编程”)1.1阅读 “网络编程参考资料-传输层.pdf”中 11.2部分,输入11.2.4部分“最简单的UDP程序”的源代码(UdpSend.java和UdpRecv.java)并在机器上编译运行通过(注意:要根据自己的机器IP地址修改源代码)。【程序源代码】import .*;public class UdpSend public static void main(String args)throws ExceptionDatagramSocket ds=new DatagramSocket();String str="hello word"DatagramPacket dp =new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("10.66.25.172"),3000);ds.send(dp);ds.close();import .*;public class UdpRecv public static void main(String args)throws ExceptionDatagramSocket ds=new DatagramSocket(3000);byte buf=new byte1024;DatagramPacket dp =new DatagramPacket(buf,1024);ds.receive(dp);String strRecv=new String(dp.getData(),0,dp.getLength()+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort();System.out.println(strRecv);ds.close();Thread.sleep(5000);【实验结果与分析】2. TCP编程(参考电子讲义“网络编程参考资料-传输层.pdf”及教材“第2章 Socket编程”)2.1阅读 “网络编程参考资料-传输层.pdf”中 11.3 部分,输入11.3.3部分“简单的TCP服务器程序”的源代码(TcpServer.java)并在机器上编译运行,然后通过在命令行中输入“telnet 自己的IP地址 8001”进行测试。【程序源代码】import .*;import java.io.*;public class TcpServer public static void main(String args)tryServerSocket ss=new ServerSocket(8001);Socket s=ss.accept();InputStream ips=s.getInputStream();OutputStream ops=s.getOutputStream();ops.write("welcome to www.it315.org!".getBytes();byte buf=new byte1024;int len=ips.read(buf);System.out.println(new String(buf,0,len);ips.close();ops.close();s.close();ss.close();catch(Exception e)e.printStackTrace();【实验结果与分析】2.2阅读 “网络编程参考资料-传输层.pdf”中 11.3 部分,输入11.3.4 部分“TCP服务器程序”(Tcp_Server.java)以及11.3.5客户端程序的源代码(Tcp_Client.java)并在机器上编译运行,客户端测试命令为“java Tcp_Client 自己的IP地址 8001”。【程序源代码】import .*;import java.io.*;class Servicer implements Runnable Socket s;public Servicer(Socket s)this.s=s;public void run()tryInputStream ips = s.getInputStream();OutputStream ops = s.getOutputStream();BufferedReader br=new BufferedReader(new InputStreamReader(ips);DataOutputStream dos=new DataOutputStream(ops);while(true)String strWord=br.readLine();if(strWord.equalsIgnoreCase("quit")break;String strEcho=(new StringBuffer(strWord).reverse().toString();dos.writeBytes(strWord+"->"+strEcho+System.getProperty("line.separator");br.close();dos.close();s.close();catch(Exception e)e.printStackTrace();class TcpServerpublic static void main(String args)tryServerSocket ss=new ServerSocket(8001);while(true)Socket s=ss.accept();new Thread(new Servicer(s).start();catch(Exception e)e.printStackTrace();import .*;import java.io.*;public class TcpClient public static void main(String args)tryif(args.length<2)System.out.println("Usage:java TcpClient ServerIP ServerPort");return;Socket s=new Socket(InetAddress.getByName(args0),Integer.parseInt(args1);InputStream ips=s.getInputStream();OutputStream ops=s.getOutputStream();BufferedReader brKey=new BufferedReader(new InputStreamReader(System.in);DataOutputStream dos=new DataOutputStream(ops);BufferedReader brNet = new BufferedReader(new InputStreamReader(ips);while(true)String strWord=brKey.readLine();dos.writeBytes(strWord+System.getProperty("line.separator");if(strWord.equalsIgnoreCase("quit")break;elseSystem.out.println(brNet.readLine();dos.close();brNet.close();brKey.close();s.close();catch(Exception e)e.printStackTrace();【实验结果与分析】3. Ethereal抓包分析用Ethereal软件截获上面三个程序运行时客户机和服务器之间发送的数据包,并且根据截获的数据包内容进行分析。【实验结果与分析】SendReceiveTcp三. 讨论、心得本次实验通过实现使用Java Socket进行通信的UDP客户端和服务器和TCP客户端和服务器来获得关于使用Java Socket网络编程的经验;专心-专注-专业