Witam. Szukałem trochę na forum, ale ciągle nie jestem pewien. Mianowicie czy odebranie datagramu od serwera przez obiekt Socket wiąże się z koniecznością przekierowywania portów u mnie? Chodzi mi o pobranie danych na temat serwera gry i gdy stawiam go u siebie to nie ma problemu, ale dostaję timeouta przy odbieraniu pakietu ze zdalnego serwera.
0
Tutaj wysyłam i odbieram pakiet. Dostaję oczywiście wiadomość "Cannot receive packet.".
try {
this.socket.send(packet);
} catch (IOException ex) {
System.out.println("Cannot send packet.");
System.exit(-1);
}
DatagramPacket receive = new DatagramPacket(new byte[256], 256);
try {
this.socket.setSoTimeout(5000);
this.socket.receive(receive);
} catch (IOException ex) {
System.out.println("Cannot receive packet.");
System.exit(-1);
}
Gniazdo otwieram w konstruktorze:
try {
this.socket = new DatagramSocket();
} catch (SocketException ex) {
System.out.println("Cannot create socket.");
System.exit(-1);
}
Zwiększenie timeouta nic nie daje. Dałem 0 to program chodził 10 minut i nic nie dostał. Na lokalnym serwerze wszystko działa jak należy.

- Rejestracja:prawie 14 lat
- Ostatnio:ponad 12 lat
- Postów:10
0
Hmmm nie wiem bym musiał pokombinować z całym kodem xD natomiast ja używam bibliotekę Netty http://www.jboss.org/netty. I jest wiele szybciej i łatwiej napisać coś takiego.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.