首页 > 编程语言 >UDP网络编程java实现

UDP网络编程java实现

时间:2024-07-15 23:31:17浏览次数:18  
标签:ftp UDP java 编程 packet import new 数据包

Udp

Udp服务端

实现步骤:

  1. 创建Udp对象,监听端口
  2. 创建数据包(数据包,数据长度)
  3. 接收数据包(数据包)
  4. 读取数据包,并输出
    将字节数组转化为字符串
  5. 响应客户端消息(设置数据包)
  6. 发送数据包
//监听端口号
DatagramSocket datagramSocket = new DatagramSocket(6666);

//创建数据包
byte[] buff = new byte[1024];
DatagramPacket packet = new DatagramPacket(buff,buff.length());

//接收数据包
datagramSocket.receive();
System.out.println("数据包已经接收到了")

//读取数据包
byte[] data = package.getData();
String strToData = new String(data);
System.out.println("读取到的数据为"+strToData().trim())

   //响应客户端消息
   if ("天王盖地虎".equals(strToByte.trim())){
       packet.setData("宝塔镇河妖~".getBytes());
   }else{
       packet.setData("滚!别来沾边~".getBytes());
       }
       //发送消息
     datagramSocket.send(packet);

udp客户端

实现步骤:

  1. 使用DatagramSocket()进行配置主机和端口号
  2. 创建连接
  3. 创建数据包DatagramPacket(buff,buff.length())
  4. 将字符串转为字节,存入数据包package.setData(“”.getbytes())
  5. 接收数据请求datagramSocket().receive(packet)
  6. 获取字节数组,package.getData()
  7. 将字节转换字符
  8. 输出响应值

package com.bohai.project.day_7_15;

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

/**
 * @author bohai
 * @date :2024-07-15-9:57
 * @description: Udp客户端
 *
 * 接收发送消息使用dataGramSocket
 * 设值取值使用dataGramPackage
 *
 **/
public class UdpClient {
    public static void main(String[] args) {
        try (DatagramSocket datagramSocket = new DatagramSocket();){
            datagramSocket.connect(InetAddress.getByName("192.168.199.132"),6666);

           //创建数据包
            byte[] buff = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buff,buff.length);
            //todo 将字符串转换为字节
            packet.setData("天王盖地虎".getBytes());

            //发送数据
            datagramSocket.send(packet);

            //接受数据响应数据
            //回复客户端
            datagramSocket.receive(packet);
            byte[] data = packet.getData();
            String strReceive = new String(data);
            System.out.println("响应数据:"+strReceive);

        } catch (SocketException | UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用java实现ftp文件上传

  1. 使用输入流读取文件流
  2. 创建FtpClient()对象
  3. 连接ftpcontent(), 登录ftplogin()
  4. 指定上传文件类型setFileType
  5. 上传文件storefie()
package com.bohai.project.day_7_15;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author bohai
 * @date :2024-07-15-12:08
 * @description: 图片上传
 **/
public class ClientFtpPicture {
    public static void main(String[] args) {
        //使用输入流,获取本地图片流
        try(FileInputStream fileInputStream = new FileInputStream("F:\\桌面\\捷丰星球\\西安建筑科技大学华清学院\\2024年各科作业\\软件测试上机作业\\第二次\\project001\\微信截图_20240712150012.png");) {
            //创建ftp连接
            FTPClient ftpClient = new FTPClient();

            //连接ftp
            ftpClient.connect("192.168.199.100",21);
            //登录ftp连接
            ftpClient.login("bailongma","123456");

            //指定文件类型
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            //上传文件
            boolean isSuccess = ftpClient.storeFile("123.jpg", fileInputStream);
            System.out.println(isSuccess);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

获取ftp服务器中的文件

package com.bohai.project.day_7_15;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author bohai
 * @date :2024-07-15-11:52
 * @description: ftp客户端
 **/
public class FtpClient {
    public static void main(String[] args) {
        try {
            FTPClient ftpClient = new FTPClient();
            //
            ftpClient.connect("192.168.199.100",21);
            ftpClient.login("bailongma","123456");

            //获取文件列表
            FTPFile[] ftpFiles = ftpClient.listFiles();

            for (FTPFile files :ftpFiles){
                System.out.println(files.getName());
                //时间格式化
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                //获取时间
                Date time = files.getTimestamp().getTime();
                System.out.println(simpleDateFormat.format(time));
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

标签:ftp,UDP,java,编程,packet,import,new,数据包
From: https://blog.csdn.net/m0_48851832/article/details/140451211

相关文章

  • 【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?
    一、Java四大引用有哪些?在Java中,有四种不同类型的引用,它们在垃圾回收和对象生命周期管理方面有着不同的作用和行为。这四种引用分别是:强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)下面详细解释每种引用的特点和用途:......
  • [Java基础]HashMap
    HashSet基于哈希表实现的无序集合,它使用哈希算法来存储和检索元素。下面是向HashSet中加入元素的过程:计算哈希码(HashCode):当你向HashSet中添加一个元素时,首先会调用该元素的hashCode()方法,得到元素的哈希码。如果元素为null,则它的哈希码为0。映射到桶位置(BucketP......
  • JavaScript全解析——本地存储✔(localStorage~sessionStorage~cookie)
    ●就是浏览器给我们提供的可以让我们在浏览器上保存一些数据●常用的本地存储(localStorage~sessionStorage~cookie)1-localStorage=>特点:->长期存储,除非手动删除否则会一直保存在浏览器中清除缓存或者卸载浏览器也就没有了->可以跨页面通讯,也就是说在一个页面写下......
  • Java 中有哪几种基本数据类型?请分别列出它们并简述每种数据类型的特点及其在内存中的
    在Java的世界里,数据是构建应用程序的基石。为了高效地处理这些数据,Java设计了一系列基础数据类型,它们直接映射到计算机硬件上,因此在性能和内存使用上更为高效。我们常说的Java八大基本数据类型,涵盖了整数、浮点数、字符和布尔值,下面我将一一介绍它们的特点以及在内存中的占用......
  • Java 中如何实现接口和抽象类,它们的主要区别是什么?
    在Java编程中,接口(Interface)和抽象类(AbstractClass)是实现抽象化的两种重要手段,它们帮助我们设计更灵活、可扩展的代码结构。下面,我将从定义、实现方式、主要区别以及应用场景等方面,用平实的语言和示例代码来阐述它们的使用。接口(Interface)定义:接口是一种完全抽象的类型,它只......
  • linux高级编程(sqlite数据库调用)
    数据库1、分类:大型  中型        小型      ORACLE MYSQL/MSSQL SQLITE DBIIpowdb      关系型数据库    2、名词:      DB      数据库selectupdatedatabase      DBMS   数据库管理......
  • 什么是 Java 中的静态变量和静态方法?它们在类与对象间的关系是如何体现的?
    在Java编程的世界里,静态变量和静态方法是两个非常基础且重要的概念,它们让我们的代码更加灵活和高效。想象一下,你正在设计一个班级管理系统,每个学生都有姓名和学号,但班级的名称只有一个,对所有人共享。这里的班级名称就可以用静态变量来表示,因为它不属于任何一个特定的学生,而是......
  • 第一百六十四节 Java IO教程 - Java随机访问文件
    JavaIO教程-Java随机访问文件使用随机访问文件,我们可以从文件读取以及写入文件。使用文件输入和输出流的读取和写入是顺序过程。使用随机访问文件,我们可以在文件中的任何位置读取或写入。RandomAccessFile类的一个对象可以进行随机文件访问。我们可以读/写字节和所有原......
  • 第一百六十五节 Java IO教程 - Java标准输入/输出/错误流
    JavaIO教程-Java标准输入/输出/错误流我们可以使用System.out和System.err对象引用,只要我们可以使用OutputStream对象。我们可以使用System.in对象,只要我们可以使用InputStream对象。System类提供了三个静态设置器方法setOut(),setIn()和setErr(),以用您自己的设备替换这......
  • Javase-5.逻辑控制的习题
    1.根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)Scannersc=newScanner(System.in);intage=sc.nextInt();if(age>0&&age<=18){System.out.println("是少年");}elseif(age>=19&&......