我想通过提出这个问题来实现的目的是学习如何向另一台计算机发送和接收二维数组。
上下文是 2-D Array 是我游戏的地图,当我开始游戏时,我希望选择一个服务器或客户端(如果是客户端,请指定服务器 IP )然后服务器在连接时将发送客户端(其中一个是另一个人,具有不同的 IP )2D阵列。
我希望这一切都有意义,我已经给出了这个,但我无法使它工作,我尝试过数据报包,但我无法弄清楚如何发送所有分段中的2D数组,然后将其转换回2D数组。
我需要使用哪种类型的流或一般网络对象?它能够发送2D阵列吗? 你能举个例子帮我设置吗?
另外需要注意的是,之后我将发送播放器坐标和地图更改,因此如果网络对象也适用,那么这是一个加号。
答案 0 :(得分:2)
如果对象类型是instanceof Serializable
,这将适用于任何基本类型数组和Object数组服务器
ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
ObjectInputStream is = new ObjectInputStream(s.getInputStream());
byte[][] array = (byte[][])is.readObject();
客户
byte[][] array = new byte[10][10];
Socket s = new Socket("host", port);
ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream());
os.writeObject(array);
答案 1 :(得分:0)
您应该从中创建一个对象。之后更容易处理。
之后你将它序列化,然后将它拆分为较小的byte [](如果它大于64 kb)。
你为每个数据包添加一些字节,我更喜欢
byte [0] =被分割了?
byte [1] + byte [2] = sendNumber(仅用于控制,在每个发送的对象之后增加)
byte [3] =你的对象有多少个部分
byte [4] =它是什么部分
你还需要什么。
之后,您可以轻松地将这些部件放在一起
我从未使用它,但我也发现了一个名为kryonet的图书馆(谷歌搜索时)
看看......谷歌正确。