ZUCC_计算机网络实验_实验13 传输层网络编程
2022/3/6 14:17:48
本文主要是介绍ZUCC_计算机网络实验_实验13 传输层网络编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
浙江大学城市学院实验报告
文件下载:https://download.csdn.net/download/OwemShu/83611710
一. 实验目的和要求
- 通过实现使用Java Socket进行通信的UDP客户端和服务器来获得关于使用Java Socket网络编程的经验;
- 通过实现使用Java Socket进行通信的TCP客户端和服务器来获得关于使用Java Socket网络编程的经验。
二. 实验内容、原理及实验结果与分析
1. UDP编程
阅读讲义,并将源代码(UdpSend.java和UdpRecv.java)在机器上编译运行通过(注意:要根据自己的机器IP地址修改源代码)。
【程序源代码】
import java.net.*; public class UdpSend { public static void main(String[] args)throws Exception { DatagramSocket ds = new DatagramSocket(); String str = "Hello World"; DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName("169.254.189.121"), 9000); ds.send(dp); ds.close(); } }
import java.net.*; public class UdpRecv { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(9000); byte[] buf = new byte[1024]; 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(); } }
【实验结果与分析】
2. TCP编程
阅读讲义,并将源代码(TcpServer.java)在机器上编译运行,然后通过在命令行中输入“telnet 自己的IP地址 8001”进行测试。
【程序源代码】
import java.net.*; import java.io.*; public class TcpServer { public static void main(String [] args){ try { ServerSocket ss=new ServerSocket(8001); Socket s=ss.accept(); InputStream ips=s.getInputStream(); OutputStream ops=s.getOutputStream(); ops.write("welcome to www.baidu.com!".getBytes()); byte [] buf=new byte[1024]; 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 阅读讲义,并将服务器端(Tcp_Server.java)以及客户端程序的源代码(Tcp_Client.java)在机器上编译运行,客户端测试命令为“java Tcp_Client 自己的IP地址 8001”。
【程序源代码】
import java.net.*; import java.io.*; class Servicer implements Runnable { Socket s; public Servicer(Socket s) { this.s = s; } public void run() { try { InputStream 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(); System.out.println(strWord + ":" + strWord.length()); 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(); } } }
import java.net.ServerSocket; import java.net.Socket; class Tcp_Server { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(8001); while (true) { Socket s = ss.accept(); new Thread(new Servicer(s)).start(); } } catch (Exception e) { e.printStackTrace(); } } }
class TcpClient { public static void main(String[] args) { try { if (args.length < 2) { System.out.println("Usage:java TcpClient ServerIP ServerPort"); return; } Socket s = new Socket(InetAddress.getByName(args[0]), Integer.parseInt(args[1])); 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; else System.out.println(brNet.readLine()); } dos.close(); brNet.close(); brKey.close(); s.close(); } catch (Exception e) { e.printStackTrace(); } } }
【实验结果与分析】
3. Wireshark抓包分析
用Wireshark软件截获上面三个程序运行时客户机和服务器之间发送的数据包,并且根据截获的数据包内容进行分析。
【实验结果与分析】
三. 讨论、心得
记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。
本次通过学习Java Socket进行通信的UDP和TCP客户端与服务器积累了相关经验,拓宽视野,深化了对相关知识的理解;
这篇关于ZUCC_计算机网络实验_实验13 传输层网络编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-04安装 VPrix Desktop 的系统要求-icode9专业技术文章分享
- 2024-05-01巧用 TiCDC Syncpoint 构建银行实时交易和准实时计算一体化架构
- 2024-05-01银行核心背后的落地工程体系丨Oracle - TiDB 数据迁移详解
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享