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,等我回头发布

相关推荐
yaoxin52112342 分钟前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
编程牛马姐1 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
NotFound4861 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
2401_873479401 小时前
如何从零搭建私有化IP查询平台?数据采集、清洗、建库到API发布全流程
服务器·网络·tcp/ip
一 乐3 小时前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
鱼鳞_3 小时前
Java学习笔记_Day29(异常)
java·笔记·学习
FS_Marking3 小时前
CWDM vs DWDM:区别是什么?
网络
烟锁池塘柳03 小时前
一文讲透 C++ / Java 中方法重载(Overload)与方法重写(Override)在调用时机等方面的区别
java·c++·面向对象
一叶飘零_sweeeet3 小时前
深入拆解 Fork/Join 框架:核心原理、分治模型与参数调优实战
java·并发编程
云烟成雨TD3 小时前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring