Java网络编程 、UDP、TCP、Socket通信

这个是第一篇,我先写udp,

首先我解释一下这个的特点是什么,他的特点主要是:

我发送消息之后就不管这个消息的任何情况,也就是,我只要把这个消息发送出去就不管了

这个是大白话的解释,具体的就是消息效率高,不可靠,主要应用场景是语音和视频通话,因为这个udp发送消息是以包的形式发送的,并且一个包的具体大小是64kb,并且不回超过 这个64kb

//下面我来演示意思具体的java代码是怎么写的

//首页得准备两个包,一个是客户端 一个是服务器端,准备两个,由于我是一台电脑,这样就不用考虑ip地址了,那我先一个怎么获取本机ip地址和本机的主机名字

java 复制代码
package clien;

import java.net.InetAddress;

public class indetAddress {
    public static void main(String[] args) throws Exception {
        //获取ip地址
        InetAddress localHost = InetAddress.getLocalHost();
        String hostAddress = localHost.getHostAddress();
        System.out.println("ip地址"+hostAddress);
        String hostName = localHost.getHostName();
        System.out.println("主机名:"+hostName);
    }
}

好,我现在来写客户端和服务器端,我写截一个图这样看着方便

那我写代码客户端

java 复制代码
package clien;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

/**
 * 客户端
 */
public class ClientSocket {
    public static void main(String[] args) throws Exception {
        //创建客户端
        DatagramSocket datagramSocket = new DatagramSocket();
        //创建发消息的容器
        //byte buf[],  //创建字节数组
        //int length,  //数据的长度
        //InetAddress address,  //ip地址
        //int port  //端口号
        byte[] bytes = "你好服务端".getBytes(StandardCharsets.UTF_8);
        DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),9999);
        //发送消息
        datagramSocket.send(datagramPacket);
        System.out.println("客户端发送成功");
        //关闭释放资源
        datagramSocket.close();

    }
}

在写服务器端

java 复制代码
package server;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 服务器端
 */
public class ServerSocket {
    public static void main(String[] args) throws Exception{
        //创建服务器端
        DatagramSocket datagramSocket = new DatagramSocket(9999);
        //byte buf[], int length,
        //用于接受
        byte[] bytes=new byte[1024*64]; //最大不会超过64kb
        DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);
        System.out.println("服务开启");
        //要显示数据 拿到数据
        datagramSocket.receive(datagramPacket);
        //这个是拿到数据的长度
        int length = datagramPacket.getLength();
        //这个是显示的数据
        String data = new String(bytes, 0, length);
        //获取客户端的ip地址
        String hostAddress = datagramPacket.getAddress().getHostAddress();
        //获取客户端的名字
        String hostName = datagramPacket.getAddress().getHostName();
        System.out.println("客服端发送过的数据:"+data+"\n数据长度:"+length+"\n客户端的ip地址:"+hostAddress+"\n客户端的名字:"+hostName);
        datagramSocket.close();
    }
}

好了,我先写这么多,后面还有tcp,等我回头发布

相关推荐
前端开发张小七几秒前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
ThsPool1 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
赤壁小虾1 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
for_ever_love__2 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
一名普通的电源工程师2 小时前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
青山木2 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
Jul1en_2 小时前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
XWalnut3 小时前
SpringBoot快速入门
java·spring boot·后端
2301_780789663 小时前
零信任时代:WAF 从边界防护到微隔离的架构跃迁
网络·安全·web安全·kubernetes·ddos
前端 贾公子3 小时前
第06章:结构化输出 (上)
java·服务器·前端