java - 使用java将对象发送到本地主机服务器?

标签 java file object serialization

如何在本地主机服务器中创建 .ser 文件或将对象写入 .ser 文件?

以下代码可以读取.ser文件:

   public Object deserialize(InputStream is) {
    ObjectInputStream in;
    Object obj;
    try {
        in = new ObjectInputStream(is);
        obj = in.readObject();
        in.close();
        return obj;
    } catch (IOException ex) {
        ex.printStackTrace();
        throw new RuntimeException(ex);
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
        throw new RuntimeException(ex);
    }
    }


        URL url;
        URLConnection urlConn;
        DataInputStream dis;

        //url = new URL("http://localhost/Person.ser");

        urlConn = url.openConnection();
        urlConn.setDoInput(true);
        urlConn.setUseCaches(false);
        Person person = (person) deserialize(urlConn.getInputStream());

我需要任何服务器端程序来接收对象并将其存储在文件中吗?

最佳答案

您可以使用以下方式写入.ser文件:

try {
        FileOutputStream fos = new FileOutputStream("Filename.ser");
        ObjectOutputStream out = new ObjectOutputStream(fos);
        out.write(obj);
        fos.close();
        out.close();

    } catch (IOException ex) {}

更新
要在服务器端读取对象,您需要创建 ObjectInputStream 包装套接字的 inputStream,通过该套接字与客户端进行交互。可以按如下方式完成:

try
      {
        Socket s = serverSocket.accept();
        ObjectInputStream oin = new ObjectInputStream(s.getInputStream());
        Object obj = oin.readObject();
        oin.close();
      }catch(Exception ex){}

好的,这是我将 ArrayList 发送到服务器的完整示例。
Client.java

import java.net.*;
import java.io.*;
import java.util.*;

public class Client 
{
    public static void main(String[] args) 
    {
        Socket s = null;
        ObjectOutputStream out = null;  
        System.out.println("Connecting to Server ...");
        try 
        {
            s = new Socket("localhost", 1401);
            out = new ObjectOutputStream (s.getOutputStream());
            ArrayList<String> list = ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < 10 ; i++)
    {
        list.add("String"+i);
    }
            out.writeObject(list);out.flush();
        System.out.println("ArrayList sent to Server");
        } catch ( Exception e) 
        {
            e.printStackTrace();
        }
        finally
        {
            if (out!= null)
            {
                try
                {
                    out.close();
                }
                catch (Exception ex){}
            }
            if (s != null)
            {
                try
                {
                    s.close();
                }
                catch (Exception ex){}
            }
        }
    }
}

服务器.java

import java.net.*;
import java.io.*;
import java.util.*;

public class Server 
{
    public static void main(String[] args) 
    {
        ObjectInputStream oin = null;
        ServerSocket server;
        Socket socket = null;
        try
        {
            server = new ServerSocket(1401);
            socket = server.accept();
            System.out.println("Client Connected..Sending ArrayList to Client");
            oin = new ObjectInputStream(socket.getInputStream());
            ArrayList<String> list = (ArrayList<String>)oin.readObject();
        System.out.println("Recieved ArrayList from client "+list);
            //Writing to file now 
            FileOutputStream fos = new FileOutputStream("Filename.ser");
            ObjectOutputStream out = new ObjectOutputStream(fos);
            out.write(obj);
            fos.close();
            out.close();
            System.out.println("Written to file");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            if (oin != null)
            {
                try
                {
                    oin.close();
                }
                catch (Exception ex){}
            }
            if (socket != null)
            {
                try
                {
                    socket.close();
                }
                catch (Exception ex){}
            }
        }
    }
}

关于java - 使用java将对象发送到本地主机服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15591397/

相关文章:

Python3 在字节数组中搜索

java - 从 Java 中的字符串在内存中创建 File 对象

EC 公钥/私钥的文件格式?

python - 如何按属性访问列表中的对象?

java - 将数组中的输入值加 1?结果是 [1,1,1..]

java - 带有 jax-rs : BeanCreationException 的 REST 服务

java - 如果我想使用 Google App Engine 从服务器代码写入 Firebase,是否需要启用计费?

Java接口(interface)问题

c++ - 为什么指向对象的第二个指针未设置为 NULL 而是对象指针?

c++ - 对象已经定义