java - 如何通过套接字发送 ArrayList? (TCP)

标签 java tcp

我一直在尝试通过套接字将 ArrayList 发送到我的服务器。

public class Packet00Login extends Packet
{
private String username;
private double x, y;
private int dir;
private float health;

private List<Mob> mobs;

public Packet00Login(byte[] data)
{
    super(00);
    String[] dataArray = readData(data).split(",");
    this.username = dataArray[0];
    this.x = Double.parseDouble(dataArray[1]);
    this.y = Double.parseDouble(dataArray[2]);
    this.dir = Integer.parseInt(dataArray[3]);
    this.health = Float.parseFloat(dataArray[4]);

    // this is where my problem is, I don't know how to parse it
    this.mobs = dataArray[5];
}

public Packet00Login(String username, double x, double y, int dir, float health, List<Mob> mobs)
{
    super(00);
    this.username = username;
    this.x = x;
    this.y = y;
    this.dir = dir;
    this.health = health;

    this.mobs = mobs;
}

@Override
public void writeData(GameClient client)
{
    client.sendData(getData());
}

@Override
public void writeData(GameServer server)
{
    server.sendDataToAllClients(getData());
}

@Override
public byte[] getData()
{
    return ("00" + this.username + "," + this.x + "," + this.y + "," + this.dir + "," + this.health + "," + this.mobs).getBytes();
}

public String getUsername()
{
    return this.username;
}

public double getX()
{
    return this.x;
}

public double getY()
{
    return this.y;
}

public int getDir()
{
    return this.dir;
}

public float getHealth()
{
    return this.health;
}


public List<Mob> getMobs()
{
    return this.mobs;
}
 }

最佳答案

一个非常简单的方法是:使用 Gson将您的 Packet00Login 对象序列化为 String 对象并通过网络发送它,然后在另一端检索 String 对象并使用 Gson 将其反序列化为 Packet00Login 对象。

关于java - 如何通过套接字发送 ArrayList? (TCP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555430/

相关文章:

java - 使用 Twitter4j 每日趋势?

java - 多客户端聊天程序,向所有客户端广播聊天?

javascript - 无法使用 Node.js 和繁琐的连接到 SQL Server

Linux应用程序未ACK FIN数据包并发生重传

java - 如何在单台 linux 机器上创建 50000 个 tcp 连接?

java - 调用自定义异常类

Java 等同于 C# 中的 where

java - Drawable不会在SurfaceView上绘制,Thread实现,不重写onDraw

sockets - TCP 套接字读取不带帧或大小指示符的可变长度数据

android - 连接被拒绝 : IOException in android TCP/IP