服务端,客户端,交互问题

1.客户端的界面交互问题,使用FXML文件,进行布局,更新。

今天写了一个更换头像的问题,采用一发一收的方式,不断进行方法的调用,这样就会有个最大的问题,我不同之间的控件,不断调用,然后调用过去调用过来,就会出错,并且最大的问题,就是我在这个这个布局类中更新了数据,然后用户的信息可以得到更新,但是我的布局最初已经搞好了,信息似乎是改不了,我再次调用实体类中的方法,导致最后程序出问题,找不到问题所在,这个最头疼采用一发一收,返回信息太乱,FXML文件的相互调用,更加乱,今天就是不断地的再改。

现在 客户端采用单开一个线程,进行处理服务端发过来的请求,并再开一个主控制类,在切换场景时,不断给主控制类中的静态变量进行赋值,找到实例对象。

客户端在多开的那个线程中进行针对请求,对不同实例对象的UI界面进行更新(通过调用实体中的方法)及时更新数据。

2.在主控制类中储存不同组件之间的实体类(这里注意的就是切换场景时,要进行,对实体类重新赋值。)

3.登录之后进行多开一个线程,进行专门监听服务端的请求

 

 针对请求类型不断做出反应,对实体类进行处理。后面的思路更加清晰

4.上传文件的封装类,

以后进行传输文件就可以通过这个进行传输,直接调用类中的写入文件和写出文件,就可以对简单的传输文件了。

 

package com.test.po;

import java.io.*;

public class MyFile implements Serializable {
        private String name;
        private byte[] fileData; 
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public byte[] getFileData() {
            return fileData;
        }

        public void setFileData(byte[] fileData) {
            this.fileData = fileData;
        }

        public MyFile(String name) {
            this.name = name;
        }

        public MyFile() {
        }

        public Integer readFileData(File file) {
            if (!file.isFile()) return 0;
            try {
                FileInputStream fileInputStream = new FileInputStream(file);
                ByteArrayOutputStream buffer = new ByteArrayOutputStream();
                byte[] temp = new byte[1024 * 1024]; // 1MB
                int len;
                while ((len = fileInputStream.read(temp)) != -1) {
                    buffer.write(temp, 0, len);
                }
                fileInputStream.close();
                this.fileData = buffer.toByteArray(); // 将 ByteArrayOutputStream 转换为 byte[]
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("文件读取错误");
                return 0;
            }
            return 1;
        }

        public Integer writeFileData(File file) {
            if (fileData == null) return 0;
            if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("文件创建错误");
                    return 0;
                }
            }
            try {
                FileOutputStream fileOutputStream = new FileOutputStream(file);
                fileOutputStream.write(fileData); // 直接写入 byte[] 数组
                fileOutputStream.flush();
                fileOutputStream.close();
            } catch (Exception e) {
                System.out.println("文件写入错误");
                e.printStackTrace();
                return 0;
            }
            return 1;
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值