udp 版本的 echo server 和 echo client

文章介绍了UDP数据报套接字的概念,包括套接字作为应用层和传输层之间的接口,以及如何使用DatagramSocketAPI进行一发一收的通信。提供了客户端和服务器的Java代码示例,展示了一个简单的UDP回显服务的实现。客户端发送请求,服务器接收并返回相同的响应。


前言

基于udp socket写一个最简单的客户端服务器程序.

UDP数据报套接字编程

什么是套接字

我们先来解释一下什么是套接字吧!
套接字(socket)是一种网络通信的编程接口,是在应用层和传输层之间的一个抽象层,它提供了一组接口用于应用程序实现网络通信。

在网络通信中,套接字充当了一个通信链路的端点,通过套接字可以进行数据的读写和传输,套接字支持多种传输层协议,比如TCP和UDP等。通过套接字,我们可以创建一个服务器端应用程序,监听客户端的请求,也可以创建一个客户端应用程序,向服务器发送请求。

套接字的实现通常是由操作系统提供的,应用程序只需要调用相应的套接字接口即可进行网络通信。常见的套接字接口包括BSD socket、Winsock等。

系统给我提供的是俩种api,一种是基于TCP的,一种是基于UDP的,但是这俩者具体有什么区别呢?大家可以看看我的描述!
在这里插入图片描述
我们这里有一个专业名词,就是什么是全双工,什么是半双工,我这里画图解释一下.
在这里插入图片描述

套接字的api

我们首先来讲解一下什么是Datagram和socket
在这里插入图片描述

DatagramSocket API
DatagramSocket 是UDP Socket,用于发送和接收UDP数据报。
在这里插入图片描述

DatagramPacket API
DatagramPacket是UDP Socket发送和接收的数据报
在这里插入图片描述

示例:一发一收(无响应)

客户端发了个请求,服务器返回一个一模一样的响应.
—个服务器,主要要做三个核心工作:
1.读取请求并解析
2根据请求计算响应(省略了)3.把响应返回到客户端

客户端

import java.io.IOException;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class UdpEchoClient {
   
   
    private DatagramSocket socket = null;
    private String serverIP;
    private int serverPort;
    //客户端启动需要知道服务器在哪里!!!
    public UdpEchoClient(String serverIP, int serverPort) throws SocketException {
   
   
        //对于客户端来说,不需要显示关联端口
        //不代表没有端口,而是系统自动分配了个空闲端口
        socket = new DatagramSocket();
        this.serverIP = serverIP;
        this.serverPort = serverPort;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘忧记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值