我最近正在为3名玩家开发多人客户/服务器打字游戏。现在我发送3xboolean
,double
,2xint
和long
。我想询问是否有可能以某种方式打包数据并仅发送数据包。
答案 0 :(得分:0)
不是将实际对象写入网络,而是建议将其序列化为稳定格式(例如JSON)并发送它。接收端将从套接字获取JSON并解码为对象。以下是您需要的快速示例(我使用GSON进行Json解析)
public static void main(String[] args) {
Gson gson = new Gson();
//Sender side
Message message = new Message();
message.setA(true);
message.setD("Hello World");
String messageAsJson = gson.toJson(message);
//write messageAsJson to socket
System.out.println(messageAsJson);
//Receiver side, reads line from socket and decodes
Message decodedMessage = gson.fromJson(messageAsJson, Message.class);
System.out.println(decodedMessage.getA());
System.out.println(decodedMessage.getD());
}
public static class Message {
private Boolean a;
private String d;
public Boolean getA() {
return a;
}
public void setA(Boolean a) {
this.a = a;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
}
答案 1 :(得分:-1)
查看此示例。您必须创建一个包含以下字段的类
3xboolean,double,2xint和long
并使用此处提供的传输方法 - > http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html