我正在编写一个简单的多人策略游戏。因此,我有一个简单的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();
}