IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> udp tcp demo -> 正文阅读

[网络协议]udp tcp demo

udp

  • 新建 UDPSocketCliet

import java.io.IOException;
import java.net.*;

/**
 *  udp 客户端
 */
public class UDPSocketCliet {

    public static void main(String[] args) throws IOException {
        // 创建发送端的 socket 对象, DatagramSocket
        DatagramSocket datagramSocket = new DatagramSocket();

        // 发送的数据包
        String message = "hello udp";
        byte[] bytes = message.getBytes();
        InetAddress address = InetAddress.getLocalHost();
        int port = 12345;
        //  public DatagramPacket(byte buf[], int length, InetAddress address, int port)
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, address, port);

        // 发送打包好的数据
        datagramSocket.send(datagramPacket);

        // 释放资源
        datagramSocket.close();
    }

}

  • 新建 UDPSocketServer

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;


/**
 * udp 服务端
 */
public class UDPSocketServer {

    public static void main(String[] args) throws IOException {
        // 创建服务端的 socket 对象 DatagramSocket
        DatagramSocket datagramSocket = new DatagramSocket(12345);

        // 创建接收数据的数据包(数据接收的容器)
        byte[] bytes = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);

        // 接收数据 在此阻塞
        datagramSocket.receive(datagramPacket);

        // 针对数据包进行解析
        String hostAddress = datagramPacket.getAddress().getHostAddress();
        byte[] data = datagramPacket.getData();
        System.out.println("接收来自 "  + hostAddress + "的信息:" + new String(data));

        // 释放资源
        datagramSocket.close();
    }

}

tcp

  1. 新建 TCPSocketClient

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

/**
 *  tcp 的客户端
 */
public class TCPSocketClient {

    public static void main(String[] args) throws IOException {
        // 创建客户端的socket服务
        //  Socket(String host, int port)
        Socket socket = new Socket("127.0.0.1", 12345);

        // 获取输出流 写入数据
        OutputStream outputStream = socket.getOutputStream();

        String message = "hello tcp";
        outputStream.write(message.getBytes());

        // 释放资源
        outputStream.close();
        socket.close();
    }

}

  1. 新建 TCPSocketServer

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *  tcp 服务端
 */
public class TCPSocketServer {

    public static void main(String[] args) throws IOException {
        // 建立服务端的 socket 服务 并且监听本机的一个端口
        //  public ServerSocket(int port)
        ServerSocket serverSocket = new ServerSocket(12345);

        // 建立连接 返回与之对应的socket 来通信, 在此阻塞
        Socket accept = serverSocket.accept();

        // 获取输入流 读取数据
        InputStream inputStream = accept.getInputStream();

        byte[] bytes = new byte[1024];
        int length = inputStream.read(bytes);
        //  java.lang.StringIndexOutOfBoundsException: String index out of range: -1  read之后,则没有数据了
//        length = inputStream.read(bytes);

        System.out.println(new String(bytes, 0, length));

        // 释放资源
        inputStream.close();
        accept.close();
        serverSocket.close();
    }

}

模拟客户端一直发送数据

  1. 新建客户端 TCPSocketClient

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 *  tcp 的客户端
 */
public class TCPSocketClient {

    private  Socket socket;
    private OutputStream outputStream;
    
    public static void main(String[] args)  {
        TCPSocketClient tCPSocketClient = new TCPSocketClient();
        tCPSocketClient.create();

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int number = scanner.nextInt();  //  1  发送数据  2 结束
            System.out.println("输入的数据:" + number);
            if(number == 1){
                tCPSocketClient.sender();
            }else if(number == 2){
                tCPSocketClient.close();
                break;
            }
            System.out.println("请输入一个整数:");
        }
    }

    /**
     * 创建 连接
     */
    public void create(){
        try{
            // 创建客户端的socket服务
            //  Socket(String host, int port)
            socket = new Socket("127.0.0.1", 12345);

            // 获取输出流 写入数据
            outputStream = socket.getOutputStream();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *  发送数据
     */
    public void sender(){
        try{
            String message = "tcpclient02 hello tcp";
            outputStream.write(message.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *  关闭连接
     */
    public void close(){
        // 释放资源
        try {
            outputStream.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}

  1. 新建服务端

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *  tcp 服务端
 */
public class TCPSocketServer {

    public static void main(String[] args) throws IOException {
        // 建立服务端的 socket 服务 并且监听本机的一个端口
        //  public ServerSocket(int port)
        ServerSocket serverSocket = new ServerSocket(12345);

        // 建立连接 返回与之对应的socket 来通信, 在此阻塞
        Socket accept = serverSocket.accept();

        // 获取输入流 读取数据
        InputStream inputStream = accept.getInputStream();

        byte[] bytes = new byte[1024];
        int length = 0;
        while((length=inputStream.read(bytes))>0){
            System.out.println(new String(bytes, 0, length));
        }

        // 释放资源
        inputStream.close();
        accept.close();
        serverSocket.close();
    }

}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:49:02  更:2021-09-23 11:49:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:51:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码