Java - 通过Socket发送序列化对象

时间:2016-12-10 12:33:00

标签: java sockets serialization

我正在编写一个简单的多人策略游戏。因此,我有一个简单的Connection类,它以String形式发送不同类型的信息。

一种消息类型必须是ArrayList,其中包含操场的当前信息。

我的想法是在String中序列化ArrayList,然后在它前面设置一个简单的String标识符。

问题在于PrintWriter会切断消息并仅发送一部分消息。

public void SendGameInfo(Unit [][] gameStatus){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        ObjectOutputStream s = new ObjectOutputStream(baos);
        s.writeObject(gameStatus);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    writer.print("G: "+baos.toString());
    writer.flush();
}

我对PrintWriter的初始化:

try {
        socket = new Socket(IP_Adress,PORT);
        os = socket.getOutputStream();
        osw = new OutputStreamWriter(os);
        writer = new PrintWriter(osw);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

enter image description here

0 个答案:

没有答案