Сокет не читает пакеты
я занимаюсь написанием прокси для игрового сервера, тоесть есть два игровых сервера, и я их объединяю в одну сеть с помощью сокетов. Все работает прекрасно, но в определённый момент, сокет перестает читать пакеты, просто наглухо, ошибок нету.
package org.itxtech.nemisys.network.synlib;
import io.netty.buffer.Unpooled;
import org.itxtech.nemisys.utils.MainLogger;
import org.itxtech.nemisys.utils.ThreadedLogger;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.concurrent.ConcurrentLinkedQueue;
public class UDPSynapse extends Thread {
public DatagramSocket socket;
protected ConcurrentLinkedQueue<DatagramPacket> externalQueue;
protected ConcurrentLinkedQueue<DatagramPacket> internalQueue;
public UDPSynapse(ThreadedLogger logger, int port, String interfaz)
{
this.externalQueue = new ConcurrentLinkedQueue<>();
this.internalQueue = new ConcurrentLinkedQueue<>();
try {
socket = new DatagramSocket(port);
}catch (Exception e){
}
this.start();
}
public void pushMainToThreadPacket(DatagramPacket data) {
this.internalQueue.offer(data);
}
public DatagramPacket readMainToThreadPacket() {
return this.internalQueue.poll();
}
public void pushThreadToMainPacket(DatagramPacket data) {
this.externalQueue.offer(data);
}
public DatagramPacket readThreadToMainPacket() {
return this.externalQueue.poll();
}
@Override
public void run() {
try {
int max = 5000;
while (max > 0) {
try {
DatagramPacket packet = this.readPacket();
this.pushMainToThreadPacket(packet);
--max;
} catch (Exception e) {
e.printStackTrace();
// else ignore
}
}
} catch (Exception e) {
MainLogger.getLogger().logException(e);
}
}
public DatagramPacket readPacket()
{
try {
DatagramPacket packet = new DatagramPacket(new byte[30000], 30000);
socket.receive(packet);
System.out.println("Receive");
return packet;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
public int writePacket(byte[] data, String dest, int port) throws IOException {
this.socket.send(new DatagramPacket(data,data.length, InetAddress.getByName(dest),port));
return data.length;
}
}
Но самое интересное то, что пакеты он отправляет, а вот прочитать - не может. И дело именно в самом прокси-сервере, ибо при перезагрузке клиента - то же самое, а вот когда делаешь перезагрузку прокси-сервера, то всё начинает работать.