当前位置: 首页 > wzjs >正文

成都的网站建设自己做网站的二维码

成都的网站建设,自己做网站的二维码,关于加强网站建设工作的意见,庆阳市建设局网站在计算机网络编程中,UDP(User Datagram Protocol)是一种无连接的传输层协议,它允许应用程序在不建立连接的情况下发送数据包。与 TCP 不同,UDP 不保证数据包的顺序、可靠性或完整性,但它具有低延迟和低开销…

在计算机网络编程中,UDP(User Datagram Protocol)是一种无连接的传输层协议,它允许应用程序在不建立连接的情况下发送数据包。与 TCP 不同,UDP 不保证数据包的顺序、可靠性或完整性,但它具有低延迟和低开销的特点,适用于对实时性要求较高的应用场景,如视频流、在线游戏等。

本文将基于 Java 实现一个简单的 UDP Echo 服务器和客户端,并通过代码总结相关的知识点。

 1. UDP Echo 服务器

1.1 服务器代码结构
 

java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class UdpEchoServer {private DatagramSocket socket = null;public UdpEchoServer(int port) throws SocketException {socket = new DatagramSocket(port);}public void start() throws IOException {System.out.println("服务器启动!");while (true) {// 1. 读取请求并解析DatagramPacket requestPacket = new DatagramPacket(new byte[4096], 4096);socket.receive(requestPacket);String request = new String(requestPacket.getData(), 0, requestPacket.getLength());// 2. 根据请求计算响应String response = process(request);// 3. 把响应写回到客户端DatagramPacket responsePacket = new DatagramPacket(response.getBytes(), response.getBytes().length,requestPacket.getSocketAddress());socket.send(responsePacket);// 4. 打印日志System.out.printf("[%s:%d] req = %s, resp = %s\n", requestPacket.getAddress().toString(),requestPacket.getPort(), request, response);}}public String process(String request) {return request;}public static void main(String[] args) throws IOException {UdpEchoServer server = new UdpEchoServer(9090);server.start();}
}

 

1.2 服务器代码解析

1. DatagramSocket:`DatagramSocket` 是 Java 中用于发送和接收 UDP 数据包的类。服务器通过 `DatagramSocket` 绑定到指定的端口,等待客户端的数据包。

2. DatagramPacket:`DatagramPacket` 是用于封装 UDP 数据包的类。它包含了数据内容、数据长度、目标地址和端口等信息。服务器通过 `DatagramPacket` 接收客户端发送的数据包,并将响应数据包发送回客户端。

3. socket.receive():该方法用于接收客户端发送的数据包。它是一个阻塞方法,直到接收到数据包才会继续执行。

4.socket.send():该方法用于将数据包发送到客户端。数据包中包含了客户端的地址和端口信息,确保响应能够正确返回。

5. process():该方法用于处理客户端请求并生成响应。在这个简单的 Echo 服务器中,`process()` 方法直接返回客户端发送的请求内容。

6. 日志打印:服务器在处理完每个请求后,会打印客户端的地址、端口、请求内容和响应内容,方便调试和监控。

 2. UDP Echo 客户端

2.1 客户端代码结构

import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class UdpEchoClient {private DatagramSocket socket = null;private String serverIp = "";private int serverPort = 0;public UdpEchoClient(String ip, int port) throws SocketException {socket = new DatagramSocket();serverIp = ip;serverPort = port;}public void start() throws IOException {System.out.println("客户端启动");Scanner scanner = new Scanner(System.in);while (true) {// 从控制台读取数据,作为请求System.out.print("-> ");String request = scanner.next();// 把请求内容构造成 DatagramPacket 对象,发送给服务器DatagramPacket requestPacket = new DatagramPacket(request.getBytes(), request.getBytes().length,InetAddress.getByName(serverIp), serverPort);socket.send(requestPacket);// 尝试读取服务器返回的响应DatagramPacket responsePacket = new DatagramPacket(new byte[4096], 4096);socket.receive(responsePacket);// 打印响应String response = new String(responsePacket.getData(), 0, responsePacket.getLength());System.out.println(response);}}public static void main(String[] args) throws IOException {UdpEchoClient client = new UdpEchoClient("127.0.0.1", 9090);client.start();}
}


2.2 客户端代码解析

1. DatagramSocket:客户端也使用 `DatagramSocket` 来发送和接收 UDP 数据包。与服务器不同的是,客户端通常不需要绑定到特定的端口,而是由系统自动分配。

2. InetAddress:`InetAddress` 类用于表示 IP 地址。客户端通`InetAddress.getByName(serverIp)` 获取服务器的 IP 地址,并将其与端口号一起构造 `DatagramPacket`。

3. socket.send():客户端通过 `socket.send()` 方法将请求数据包发送到服务器。

4. socket.receive():客户端通过 `socket.receive()` 方法接收服务器返回的响应数据包。

5. 控制台输入:客户端通过 `Scanner` 从控制台读取用户输入,并将其作为请求发送到服务器。

6. 响应打印:客户端在接收到服务器的响应后,将其打印到控制台。

3. 总结

通过实现这个简单的 UDP Echo 服务器和客户端,我们可以总结出以下知识点:

1. UDP 协议的特点:UDP 是一种无连接的协议,不保证数据包的顺序、可靠性或完整性,但具有低延迟和低开销的特点。

2. DatagramSocket和 DatagramPacket:这两个类是 Java 中实现 UDP 通信的核心类。`DatagramSocket` 用于发送和接收数据包,而 `DatagramPacket` 用于封装数据包的内容、地址和端口信息。

3. 阻塞与非阻塞:`socket.receive()` 是一个阻塞方法,直到接收到数据包才会继续执行。这使得服务器和客户端能够等待对方的响应。

4. 日志与调试:在实际开发中,打印日志是非常重要的,它可以帮助我们监控程序的运行状态,排查问题。

5. Echo 服务器的应用:Echo 服务器是一种简单的网络服务,它将客户端发送的数据原样返回。虽然简单,但它可以帮助我们理解网络通信的基本原理。

希望这篇文章能够帮助你更好地理解 Java 中的 UDP 通信。

http://www.dtcms.com/wzjs/566538.html

相关文章:

  • 做网站设计多少钱网站怎样设计网址
  • 郑州模板网站建设策划公司南宁广告网页设计招聘信息
  • 国内好的设计网站安装wordpress返回404
  • 学校网站html模板咸阳市建设银行网站
  • 网站建设工作室创业计划书电子商务网站开发概述
  • ui做网站流程免费咨询服务
  • 邯郸网站设计哪家好知识付费网站搭建
  • 什么网站程序做资料库门户网站建设中存在的问题
  • 胶州网站建设dch100form e哪个网站做
  • 网站快速优化排名网站备案审核制度
  • 江华网站建设哪家做网站好 成都
  • 枣庄公司网站建设携程官网
  • 收录好的网站有哪些哪些网站可以找到做药人的信息
  • 襄阳网站seo方法手机设计图软件app
  • 网站上的图片一般多大合适创建公司网站的方案有
  • 做网站用方正字体可以额的网站建设保密协议
  • 无做弊的棋牌游戏网站公司简介网页模板
  • 天河区门户网站教育专栏推广联系方式
  • 8+1网站正能量直接入口没封高端网站定制设计
  • 百度网站 收录网站内容建设怎么写
  • 建设高端网站需要多少钱规模以上工业企业是指什么
  • 网站开发交接表四川网站建设设计公司哪家好
  • 昆山哪里有做网站的品牌推广官
  • 龙潭湖网站建设雄安专业网站建设哪家好
  • 大连网站制作公司logo是个网站
  • 广东网站建设模版重庆关键词优化平台
  • 网站开发技术 html做电影网站免责声明有用吗
  • 深圳做响应式网站设计工地建筑模板尺寸
  • 马化腾做的电商网站个人做网站郊游的英
  • 黑别人网站网站SEO优化实训