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

网站结构的规划与设计谷歌seo推广服务

网站结构的规划与设计,谷歌seo推广服务,沧州做网站哪家公司好,杭州网站建设服务公司欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在网络编程中,Echo Server 和 Echo Client 回显是一种经典的示例,用于演示基本的网络通信。Echo Server 接收来自客户端的数据,并将相同的数据发送回客户端。这种模式在测试…

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!  

        在网络编程中,Echo Server 和 Echo Client 回显是一种经典的示例,用于演示基本的网络通信。Echo Server 接收来自客户端的数据,并将相同的数据发送回客户端。这种模式在测试网络连接和理解网络通信原理时非常有用。在这篇文章中,我们将使用 Java 语言来实现基于 UDP 协议的 Echo Server 和 Echo Client。 

目录

UDP 协议概述

API介绍 

Echo Server 实现

服务器核心流程

服务器代码详解 

Echo Client 实现

客户端核心流程

客户端代码详解 

运行演示 


 

UDP 协议概述

UDP(User Datagram Protocol)是一种无连接的网络协议,它在 IP 协议的基础上提供一种快速、简单的数据传输服务。与 TCP 协议不同,UDP 不建立连接,不保证数据的可靠传输,因此适用于对实时性要求高、可以容忍一定数据丢失的应用场景,如视频会议、在线游戏等。

API介绍 

DatagramSocket 是UDP Socket,用于发送和接收UDP数据报。 
构造方法:

方法签名方法说明
DatagramSocket()创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口(一般用于客户端)
DatagramSocket(int port)

创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端) 

方法:

方法签名方法说明
void receive(DatagramPacket p)从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)
void send(DatagramPacket p)从此套接字发送数据报包(不会阻塞等待,直接发送)
void close()关闭此数据报套接字

 
DatagramPacket 是UDP Socket发送和接收的数据报。
构造方法:

方法签名方法说明
DatagramPacket(byte[] buf, int length)构造一个DatagramPacket用来接收数据报,接收的数据保存在字节数组(第一个参数buf)中,接收指定长度(第二个参数length)
DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)构造一个DatagramPacket用来发送数据报,发送的数据为字节数组(第一个参数buf)中,从offset到指定长度(第二个参数length)。address指定目的主机的IP和端口号

方法:

方法签名方法说明
InetAddress getAddress()从接收的数据报中,获取发送端主机IP地址;或从发送的数据报中,获取接收端主机IP地址
int getPort()从接收的数据报中,获取发送端主机的端口号;或从发送的数据报中,获取接收端主机端口号
byte[] getData()获取数据报中的数据

构造UDP发送的数据报时,需要传入SocketAddress,该对象可以使用InetSocketAddress来创建。

构造方法:

方法签名方法说明
InetSocketAddress(InetAddress addr, int port)创建一个Socket地址,包含IP地址和端口号

Echo Server 实现

服务器核心流程

  1. 创建 DatagramSocket 并绑定到指定端口,开始监听客户端的请求。
  2. 循环接收客户端发送的数据。
  3. 将接收到的数据原样发送回客户端。
  4. 重复步骤 2 和 3,直到服务器关闭。

服务器代码详解 

package network;import javax.lang.model.element.NestingKind;
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);}//通过 start 启动服务器的核心流程public void start() throws IOException {System.out.println("服务器启动");while (true) {//此处不停的处理客户端的请求//1.读取客户端的请求并解析DatagramPacket requestPacket = new DatagramPacket(new byte[4096],4096);//阻塞并等待客户端的请求。当数据到达时,它将数据存储在 requestPacket 中。socket.receive(requestPacket);//将二进制byte转为字符串,方便输出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(),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();}
}

Echo Client 实现

客户端核心流程

  1. 创建 DatagramSocket
  2. 从控制台读取用户输入。
  3. 将用户输入封装成 UDP 数据包并发送到服务器。
  4. 接收服务器的响应并打印到控制台。
  5. 重复步骤 2-4,直到用户选择停止。

客户端代码详解 

package network;import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class UdpEchoClient {private DatagramSocket socket = null;private String serverIP;private int serverPort;// 构造函数,初始化socket并设置服务器的IP和端口public UdpEchoClient(String serverIP,int serverPort) throws SocketException {socket = new DatagramSocket();this.serverIP = serverIP;this.serverPort = serverPort;}public void start() throws IOException {System.out.println("启动客户端");Scanner scanner = new Scanner(System.in);while (true) {//1.从控制台读取到用户的输入System.out.println("-> ");String request = scanner.next();//2.构造出一个 UPD 请求,发送给服务器// 将用户输入转换为字节数组,并发送到服务器的指定IP和端口DatagramPacket requestPacket = new DatagramPacket(request.getBytes(),request.getBytes().length, InetAddress.getByName(this.serverIP),this.serverPort);socket.send(requestPacket);//3.从服务器读取到响应DatagramPacket responsePacket = new DatagramPacket(new byte[4096],4096);socket.receive(responsePacket);//响应转换为字符串String response = new String(responsePacket.getData(),0,responsePacket.getLength());//4.把响应打印到控制台上System.out.println(response);}}public static void main(String[] args) throws IOException {//创建客户端示例,绑定本地的9090端口UdpEchoClient client = new UdpEchoClient("127.0.0.1",9090);client.start();}
}

运行演示 

1.依次启动server 和 client:

2.在client中输入请求内容,回车:

 绿色文本为输入内容,白色文本为server响应.

3.server打印请求和响应日志:

        实现一个基础的 UDP Echo Server 和 Echo Client,理解 UDP 协议的工作原理和网络通信的基本概念。这种模式不仅适用于学习目的,还可以作为构建更复杂网络应用的基础。 


希望这篇博客能为你理解网络编程提供一些帮助

如有不足之处请多多指出

我是高耳机

http://www.tj-hxxt.cn/news/55545.html

相关文章:

  • 网站ie不兼容百度推广开户渠道
  • 有没有做.net面试题的网站百度网站流量统计
  • 汕头市网站建设公司福州网站制作推广
  • wordpress安全插件汉化seo是什么职位的简称
  • 软件项目管理办法重庆店铺整站优化
  • 营销型网站跟云网站wordpress官网入口
  • 做离心开关的企业的网站百度收录时间
  • 做签证的网站关键词优化公司排名榜
  • 上海找做网站公司广州百度seo
  • wordpress 无图插件下载郑州百度推广seo
  • 仿win8 html5微网站纯手工代码外包公司有哪些
  • 鹰潭做网站的富阳网站seo价格
  • 免费可以做旅游海报 的网站新闻头条今日要闻国内
  • 安顺做网站的公司推广赚钱app排行榜
  • vs2019可以做网站吗百度应用商店app下载
  • 自己如何建设企业网站怎样建立一个网络销售平台
  • 网站备案被退回西安百度框架户
  • 做外贸一般做什么网络推广运营优化
  • 苹果软件做ppt下载网站有哪些内容广州关键词优化外包
  • 寺院网站建设重庆seo代理计费
  • 怎样维护网站免费的外贸网站推广方法
  • 后台管理网站模板下载保定seo建站
  • 网络规划设计 网站建设网络营销策略概念
  • 南昌建设医院网站seo高手是怎样炼成的
  • 扬中新冠疫情最新消息今天历下区百度seo
  • 贵阳做网站公司吗百度网盘app下载安装官方免费下载
  • 深圳龙岗网站建设开发一个app需要多少钱?
  • 公司徽标设计图片冯耀宗seo课程
  • 奉贤网站建设互联网营销师国家职业技能标准
  • 网站弹出框怎么做十大免费b2b网站