UDP网络编程java实现

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();
        }

    }
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银河流浪家007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值