I use the netty library.

ProxyOnlinePacket onlinePacket = new ProxyOnlinePacket(); Proxy.getInstance().sendPacket(onlinePacket);//Отправляю пакет System.out.print("online: " + onlinePacket.getOnline());//Тут я уже должен получить онлайн полученный с сервера. 

Package on the server side.

 public class ProxyOnlinePacket implements Packet { private int online; public ProxyOnlinePacket() {} public ProxyOnlinePacket(int online) { this.online = online; } @Override public void writePacketData(PacketBuffer buf) { buf.writeIntLE(ConnectionState.getPacket_ID(this)); buf.writeIntLE(this.online); } @Override public void readPacketData(PacketBuffer buf) { online = buf.readIntLE(); } @Override public void processPacket(Channel channel) { online = 5; channel.writeAndFlush(this); } public int getOnline() { return online; } 

}

When the server receives such a packet. I send the same packet with the changed variable online.

Client side

 public class ProxyOnlinePacket implements Packet { private int online; public ProxyOnlinePacket() {} public ProxyOnlinePacket(int online) { this.online = online; } @Override public void writePacketData(PacketBuffer buf) { buf.writeIntLE(ConnectionState.getPacket_ID(this)); buf.writeIntLE(this.online); } @Override public void readPacketData(PacketBuffer buf) { online = buf.readIntLE(); } @Override public void processPacket(Channel channel) { System.out.print("Пакет пришел обратно! " + getOnline()); } public int getOnline() { return online; } 

}

I need to somehow get online in the place where I created the package object itself and sent it myself.

How to do it?

    1 answer 1

    If I understand you correctly, then you need to create a label that the package came:

     public boolean processed = false; @Override public void processPacket(Channel channel) { System.out.print("Пакет пришел обратно! " + getOnline()); processed = true; } 

    And check its status, for example, with a loop:

     ProxyOnlinePacket onlinePacket = new ProxyOnlinePacket(); Proxy.getInstance().sendPacket(onlinePacket);//Отправляю пакет for(;!onlinePacket.processed;);//Цикл идет, пока метка не изменится, а значит, пока не прилет ответ onlinePacket.processed = false;//Возвращаем стандартное значение System.out.print("online: " + onlinePacket.getOnline());//Этот код обработается, когда пакет получит данные об онлайне 
    • It looks not very much. - Eugene Fomin
    • Fundamentally different options simply do not exist. - Alexander