计算机网络-UDP协议——沐雨先生

实验内容

1.编写并运行UDP server

2.编写并运行UDP client

3.使用Wireshark抓取并分析UDP用户数据报

基本要求

1.了解UDP上server socket与client socket之间的通信过程

2.学会使用Java语言编写UDP socket服务程序

3.学会使用Java语言编写UDP socket客户程序

4.了解UDP用户数据报的首部结构

相关知识

UDP上的服务器server与客户client之间的通信过程,如下图所示。
在这里插入图片描述

Java应用程序建立一个UDP服务器(server)的步骤(可参阅帮助文档)

(1)创建DatagramSocket对象并绑定Socket地址。调用java.net.DatagramSocket类的构造方法,构造方法之一是
public DatagramSocket(int port, InetAddress laddr)
port是端口号,laddr是要绑定的本地地址,其类型是InetAddress。下列语句建立一个DatagramSocket对象,并绑定到(port, ip)。
intport=12345;
String ip=“192.168.1.102”;
DatagramSocket s = new DatagramSocket(port,InetAddress.getByName(ip));
(2)准备一个java.net.DatagramPacket对象,用于存放即将接收的数据报。DatagramPacket类的构造方法之一是
public DatagramPacket(byte[] buf,int length)
此构造方法构造一个DatagramPacket对象,用于存放即将接收包,包的长度是length字节。例如
byte[] bufRecv = new byte[1024];
DatagramPacketpackRecv = new DatagramPacket(bufRecv, 1024);
创建一个名为packRecv的DatagramPacket,长度是1024字节。
(3)调用DatagramSocket的receive方法接收数据报,receive方法头是
public void receive(DatagramPacket p)
接收到的包存放在p中。例如
s.receive(packRecv);
packRecv指向接收到的包,包中包含数据,还包含发送方的IP及端口号等信息。可调用DatagramPacket的getData()方法得到接收到的数据部分,调用DatagramPacket的getAddress()方法得到对方地址,调用DatagramPacket的getPort()方法得到对方端口号。
(4)准备一个java.net.DatagramPacket对象,用于存放即将发送的包。使用DatagramPacket类的下列构造方法
public DatagramPacket(byte[] buf, int length, InetAddressaddress,int port)
例如下面语句
byte[] bufSend = “Hello”.getBytes();
DatagramPacketpackSend = new DatagramPacket(bufSend, bufSend.length, InetAddress.getByName(ip),port);
建立了一个名为packSend的DatagramPacket对象,包中的数据是“Hello”的二进制表
示,包的目的Socket是(ip,port)。
(5)调用DatagramSocket的send方法向对方发送数据,send方法头是
public void send(DatagramPacket p)
例如
s.send(packSend);
(6)传输结束,调用DatagramSocket的close()方法,即s.close()。

Java应用程序建立一个UDP客户的步骤

(1)调用java.net.DatagramSocket构造方法创建DatagramSocket对象,例如,
DatagramSocket s = new DatagramSocket(null);
(2)准备一个java.net.DatagramPacket对象,用于存放即将发送的包。
(3)调用DatagramSocket的send方法向对方发送数据。
(4)准备一个java.net.DatagramPacket对象,用于存放即将接收的包。
(5)调用DatagramSocket的receive方法接收包。
(6)传输结束,调用DatagramSocket的close()方法。

实验步骤

第1部分编写UDP客户和服务程序并运行
本实验建立服务器程序UdpServer.java和UdpClient.java。UdpServer运行后则等待UdpClient请求,UdpClient向UdpServer发送“Hello,world!”,UdpServer接收消息之后将此字符串再发回给UdpClient,UdpClient接收并显示这个消息。

首先进入Dos命令提示符窗口,键入命令
netstat -ano
查看已占用的UDP端口列表。实验程序中UDP服务器使用的端口号不能出现在已占用端口列表中,以确保UDP服务器使用的端口未被使用。

建立一个Java Application项目
打开NetBeans开发环境,在“D:\”盘下建立一个Java Application项目,项目名称是javanetwork,项目所在文件夹是d:\javanetwork。

1.本实验需要在此项目下建立一个名为demo.udp的包,然后在此包下建立服务器程序UdpServer.java,UdpServer运行后则等待客户请求,客户向服务器发送“Hello,world!”,服务器接收之后将此字符串再发回给客户,客户接收并显示这个字符串。参考Java应用程序建立一个UDP服务器的步骤完成编写UdpServer.java,UdpServer开始运行后则等待客户请求。你的UdpServer运行之后等待客户的输出窗口应与下图类似:
在这里插入图片描述
2.参考Java应用程序建立一个UDP客户的步骤,在demo.udp包中建立UDP上的客户程序,命名为UdpClient.java。UdpClient向服务器发送“Hello,world!”,服务器接收之后将此字符串再发回给客户,客户接收并显示这个字符串。你的UdpClient运行后输出窗口内容应与如下截图类似:
在这里插入图片描述
此时UdpServer输出窗口内容与如下截图类似:
在这里插入图片描述

第2部分抓包

A,B两名同学的电脑一组。
1.打开Wireshark程序,开始抓包;
2.A运行UdpServer, B运行UdpCient;
3.程序运行结束后停止抓包。

相关推荐

  1. 计算机网络-ICMP和ARP协议——先生

    2024-03-31 07:14:05       38 阅读
  2. 计算机网络-文件读写——先生

    2024-03-31 07:14:05       32 阅读
  3. 大数据导论-大数据分析——先生

    2024-03-31 07:14:05       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 07:14:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 07:14:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 07:14:05       82 阅读
  4. Python语言-面向对象

    2024-03-31 07:14:05       91 阅读

热门阅读

  1. CSS3新增的语法(一)

    2024-03-31 07:14:05       35 阅读
  2. 【WPF应用23】wpf 基本控件-RichTextBox详解与示例

    2024-03-31 07:14:05       41 阅读
  3. 安全算法 - 摘要算法

    2024-03-31 07:14:05       38 阅读
  4. 手搓 Docker Image Creator(DIC)工具(01):前言

    2024-03-31 07:14:05       45 阅读
  5. 达梦DCA 培训及考试总结

    2024-03-31 07:14:05       35 阅读
  6. zookeeper常见命令详解2

    2024-03-31 07:14:05       31 阅读
  7. flink: 向clickhouse写数据

    2024-03-31 07:14:05       42 阅读
  8. 【小白版】AI 答疑

    2024-03-31 07:14:05       39 阅读
  9. git 代码库查看方法

    2024-03-31 07:14:05       37 阅读