注册 登录
编程论坛 JAVA论坛

求问以下怎么实现网络编程中客户端向服务器传输多个对象(就是一个对象集合)?感谢!!

帝师 发布于 2020-11-23 19:44, 1931 次点击
我这里只写了一个传输成功了多个报错
客户:
@Override
    public void send(Collection<Environment> c) throws Exception {
        // TODO Auto-generated method stub
        String host = "127.0.0.1";
        int port = 8888;

            socket = new Socket(host, port);
            oos = new ObjectOutputStream(socket.getOutputStream());
            
            Iterator<Environment> iterator = c.iterator();
            //while(iterator.hasNext()) {               
                Environment next = iterator.next();
                //System.out.println(next);
                oos.writeObject(next);
                oos.flush();
            //}
    }

服务:
@Override
    public void reciver() throws Exception {
        // TODO Auto-generated method stub
        int port = 8888;
        
        server = new ServerSocket(port);
        System.out.println("服务器启动,监听端口"+port+",等待客户端的连接");
        socket = server.accept();
        System.out.println("服务器接收到客户端的连接:"+socket);
        
        bis = new ObjectInputStream(socket.getInputStream());
        int len = -1;
        //while((len = bis.read()) != -1) {
            Object object = bis.readObject();
            Environment e = (Environment)object;
            System.out.println(e);
        //}
    }
6 回复
#2
帝师2020-11-23 20:13
我从新写了哈,我传输完了然后他给我抛了个
at (ObjectInputStream.java:2958)
    at (ObjectInputStream.java:1538)
    at (ObjectInputStream.java:431)
    at com.briup.smart.env.server.ServerImpl.reciver(ServerImpl.java:49)
    at com.briup.smart.env.server.ServerImpl.main(ServerImpl.java:21)
是为什么啊,我所有数据已经传输完毕了。
客户:
public void send(Collection<Environment> c) throws Exception {
        // TODO Auto-generated method stub
        String host = "127.0.0.1";
        int port = 8888;

            socket = new Socket(host, port);
            oos = new ObjectOutputStream(socket.getOutputStream());
            
            Iterator<Environment> iterator = c.iterator();
            while(iterator.hasNext()) {               
                Environment next = iterator.next();
                oos.writeObject(next);
            }
            
    }

服务器:
public void reciver() throws Exception {
        // TODO Auto-generated method stub
        int port = 8888;
        
        server = new ServerSocket(port);
        System.out.println("服务器启动,监听端口"+port+",等待客户端的连接");
        socket = server.accept();
        System.out.println("服务器接收到客户端的连接:"+socket);
        
        bis = new ObjectInputStream(socket.getInputStream());
        Object object = null;
        
        while((object = bis.readObject()) != null) {
            
            Environment e = (Environment)object;
            System.out.println(e);
            i++;
        }
    }
#3
帝师2020-11-23 20:14

#4
帝师2020-11-24 09:37
已经解决
#5
sssooosss2020-11-27 08:30
共同学习
#6
晓磊2020-11-27 09:28
整的挺好
#7
wd2973338522020-11-30 07:45
加油!一起学习
1