Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 串行化套接字_Java_Sockets_Serialization - Fatal编程技术网

Java 串行化套接字

Java 串行化套接字,java,sockets,serialization,Java,Sockets,Serialization,我尝试序列化套接字,但没有成功。 正确的方法是什么 public class MySocket implements Serializable { private Socket socket; public MySocket(Socket socket) { this.socket = socket; } public Socket getSocket() { return socket; } public vo

我尝试序列化套接字,但没有成功。 正确的方法是什么

public class MySocket implements Serializable
{
    private Socket socket;

    public MySocket(Socket socket) {
        this.socket = socket;

    }
    public Socket getSocket() {
        return socket;
    }
    public void setSocket(Socket socket) {
        this.socket = socket;
    }

}

按设计
Socket
实例不可序列化-您无法保存它们或通过网络传输它们,这没有任何意义。根据您尝试执行的操作,每次需要时都需要建立一个新的套接字,而不是将其保存到磁盘等。

这不起作用,因为成员变量“socket”不可序列化


是否要通过套接字序列化某些内容?在这种情况下,应该序列化包含数据的类,而不是处理套接字的类。

套接字基本上是系统级的文件描述符,类似于文件。它只是一个整数。它可以序列化,但这样做没有意义。当套接字关闭时,文件描述符不再有意义。如果你在另一台机器上使用它也没有意义。

在socket编程中,当你说serialize时,这意味着对象应该是“可序列化的”,而不是它本身的socket

inSomeclass's method {
     ...
     ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
     out.writeObject(new MyClass());
     out.flush();
     ...
}

class MyClass implements Serializable {
     // some sort of variables and objects, whatever ....
} 

嗯。。。为什么要序列化套接字?我们可能希望将套接字对象保存在memcached上。这是一个有效的方案。