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

相关推荐
渣哥2 小时前
原来 Java 里线程安全集合有这么多种
java
间彧2 小时前
Spring Boot集成Spring Security完整指南
java
间彧2 小时前
Spring Secutiy基本原理及工作流程
java
Java水解3 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆5 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学6 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole6 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊6 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端
程序员鱼皮6 小时前
刚刚 Java 25 炸裂发布!让 Java 再次伟大
java·javascript·计算机·程序员·编程·开发·代码