1

我已经开始研究一个简单的 newtworking 项目,它为每个连接创建一个新线程,并且我正在尝试发送多个东西。我想知道是否有一种简单的方法可以简单地说声明一个变量,将整个变量发送到服务器并发送到其他客户端。例如,如果我想发送一个简单的整数数组?基本上我将如何通过套接字发送数组甚至图像?

4

1 回答 1

2

是的,有可能。您正在寻找的称为序列化,可用于通过流(套接字、文件等)发送整个对象。看看这个 java 套接字序列化教程

检查ObjectOutpuStreamObjectInputStream上的文档。

基本上你要做的是让任何你想要序列化的自定义类型实现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 回答