我已经开始研究一个简单的newtworking项目,它为每个连接创建一个新线程,我正在尝试发送多个东西。我想知道的是,有一种简单的方法可以简单地声明一个变量将整个变量发送到服务器并发送给其他客户端。例如,如果我想发送一个简单的整数数组?基本上我如何通过套接字发送数组甚至图像?
答案 0 :(得分:2)
是的,有可能。您正在寻找的是序列化,可用于通过流(套接字,文件等)发送整个对象。看看this java socket serialization tutorial。
检查ObjectOutpuStream和ObjectInputStream上的文档。
基本上你需要做的是你想要序列化的任何自定义类型实现Serializable
接口:
class MyCustomType implements Serializable {
...
}
这是一个标记接口,告诉运行时可以通过流发送此类型。
接下来,设置连接后,您可以使用ObjectOutputStream
获取套接字输入/输出流并写入对象:
MyCustomType obj = new MyCustomType();
ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
oos.writeObject(obj);
oos.flush();
或使用ObjectInputStream
:
ObjectInputStream ois = new ObjectInputStream(client.getOutputStream());
MyCustomType obj = (MyCustomType) ois.readObject();
(上面client
是Socket
)。