会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132413个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 901楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 902楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 903楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 904楼

phonebook.zip

老师你帮我看看,我加了数据库然后排序的操作有点问题该怎么改改呢

JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 905楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 906楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 907楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 908楼

package com.java;

import java.io.Serializable;

/**
 * 当该对象需要在网络上传输时,一定要实现Serializable接口
 */
public class Person implements Serializable {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package com.java;

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

public class ObjectTypeServer {
    public static void main(String[] args) {
        DatagramSocket datagramSocket = null;
        ObjectInputStream objectInputStream = null;
        try {
            //创建服务端接收数据的对象
            datagramSocket = new DatagramSocket(9999);
            //创建缓冲区
            byte[] b = new byte[1024];
            //创建数据报包对象-->对客户端传输过来的数据进行包装
            DatagramPacket dp = new DatagramPacket(b,b.length);
            //接收客户端的数据
            datagramSocket.receive(dp);
            //对接收的内容做类型转换 把拿到的字节数组转成字节数组流对象,
            // 在通过对象输入流对象把数据基于对象形式传输进来
            objectInputStream = new ObjectInputStream(new ByteArrayInputStream(dp.getData()));

            System.out.println(objectInputStream.readObject());



        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (datagramSocket!=null){
                datagramSocket.close();
            }
            if (objectInputStream!=null){
                try {
                    objectInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

package com.java;

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

public class ObjectTypeClient {
    public static void main(String[] args) {
        DatagramSocket datagramSocket = null;
        ByteArrayOutputStream bos  =null;
        ObjectOutputStream oos= null;
        try {
            Person p = new Person();

            p.setName("小于");
            p.setAge(18);

            bos=new ByteArrayOutputStream();
            oos = new ObjectOutputStream(bos);
            oos.writeObject(p);
            //将Person对象转换为字节数组
            byte[] arr = bos.toByteArray();
            //创建数据报 将数据进行包装传入服务端
            DatagramPacket dp = new DatagramPacket(arr,arr.length,9999);
            //创建给服务端发送消息的对象
            datagramSocket = new DatagramSocket(8888);
            datagramSocket.send(dp);



        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (datagramSocket!=null){
                datagramSocket.close();
            }
            if (bos!=null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (oos!=null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

java.lang.IllegalArgumentException: illegal length or offset
	at java.base/java.net.DatagramPacket.setData(DatagramPacket.java:267)
	at java.base/java.net.DatagramPacket.<init>(DatagramPacket.java:84)
	at com.java.ObjectTypeClient.main(ObjectTypeClient.java:26)

不知道哪出了问题,老师看一下

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 910楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 911楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 912楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 913楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/常用类 914楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637