[Java] Połaczenie - błedy :/

0

Witam,
pisze programik, który ma za zadanie polaczyć sie z kilkoma serwerami gier (mając tylko jego numer IP) na róznych portach, np 7778, 10001 ,6101 , wysłać tam zapytanie i odebrać dane.
Gdy probuje otworzyć połączenie poprzez Socket(ip,port) to dostaje Connection refused... tymczasem serwer ma dany port otwarty gdyz zapytanie z PHP przechodzi gładko:

$sock= fsockopen("udp://" . $d[0], $d[1]+1, $errno, $errstr,3,3);

Gdy w Javie probuje otworzyc polaczenie poprzez URL("udp://"+ip+":"+port) to twierdzi, że nie ma protokołu udp...

Co z tym zrobić?:|

0

Wiec zrobiłem to w datagramach, ale nadal jest niedobrze:

        try
        {
            gniazdko = new DatagramSocket();
            gniazdko.setSoTimeout(4000);
        }
        catch(IOException e)
	{
            System.out.println("BLAD - ("+adres+":"+port+") - "+e);
	}
        
        if(gniazdko!=null)
        {
            try
            {
                buforWys="\\\\status\\\\\\player_property\\Health\\\\\\game_property\\ElapsedTime\\\\\\game_property\\RemainingTime\\\\".getBytes();
                pakiet = new DatagramPacket(buforWys, buforWys.length, InetAddress.getByName(adres), port);
                gniazdko.send(pakiet);
                byte buforOdb[] = new byte[256];
		pakiet = new DatagramPacket(buforOdb, 256);
		gniazdko.receive(pakiet);
		String tekstOdebrany = new String(pakiet.getData()).trim();
		System.out.println("Polecenie:\n" + tekstOdebrany);
            }
            catch(IOException e)
            {
                System.out.println("BLAD - ("+adres+":"+port+") - "+e);
            }

        }

otrzymuje taki bład od wszystkich serwerów:
BLAD - (213.218.117.233:7778) - java.net.SocketTimeoutException: Receive timed out
BLAD - (212.76.39.49:7778) - java.net.SocketTimeoutException: Receive timed out

0

bo gniazdka Socket służą do połączeń TCP -do Udp są już inne gniazdka - nie pamiętam,nie korzystałem- sprawdz w dokumentacji

0

bo gniazdka Socket służą do połączeń TCP -do Udp są już inne gniazdka - nie pamiętam,nie korzystałem- sprawdz w dokumentacji

Dlateog właśnie użyłem datagramów , w koncu one służa do UDP - i nadal nic... Czy jakiś zwiazek z tym , że połączenie jest odrzucane, moze mieć firewall? :)

0

Właśnie się z czymś podobnym męczę... uzywajac fsockopen w PHP
i z tego co zauważyłem to firewall. Wystarczy, że zmienię moje domyślne:

iptables -t filter -P INPUT DROP

na ACCEPT, i juz śmiga.
Teraz zastanawiam się jaki chain wpisać zeby to działało razem z firewallem.
iptables -t filter -A INPUT -s 127.0.0.1 -j ACCEPT nie pomaga.
Moze jakies ustawienia co do pakietów? SYN

Jak ktoś ma jakiś pomysł to chętnie się dowiem, bo potrzebuję tego szybko ...

0

To raczej nie firewall, chyba, ze twoj jakis mastah admin wycial ci wyjscie na swiat ;-)
UDP to zostaw w spokoju, zwyczjany socket tworzysz Socket socket = new Socket(adres, port); i...
teraz zeby bylo fajniej wyslij odpowiednie dane :>
Calkiem, mozliwe, ze to co wysylasz to nie jest to czego oczekuje serwer, wiec dlatego cie rozlacza :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1