我已经开始研究一个简单的 newtworking 项目,它为每个连接创建一个新线程,并且我正在尝试发送多个东西。我想知道是否有一种简单的方法可以简单地说声明一个变量,将整个变量发送到服务器并发送到其他客户端。例如,如果我想发送一个简单的整数数组?基本上我将如何通过套接字发送数组甚至图像?
问问题
3662 次
1 回答
2
是的,有可能。您正在寻找的称为序列化,可用于通过流(套接字、文件等)发送整个对象。看看这个 java 套接字序列化教程。
检查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
)。
于 2012-07-08T15:22:32.010 回答