Problem z połączeniem do serwera

0

Witam

Nie wiem co jest grane, ale nie mogę połączyć się aplikacją klienta z serwerem kiedy odpalam klienta jako aplet w przeglądarce. Kiedy uruchomiłem aplet w eclipse to nie ma problemu.

kody obydwu są tu:

http://www.coderanch.com/t/204527/Sockets-Internet-Protocols/java/Successful-Applet-Socket-Connection

Proszę o pomoc

0

Sprawdzałem na przeglądarce IE oraz FF i to samo tzn. nie ma połączenia. Aplet ładuje się do przeglądarki, klikam na przycisk tego apletu i nie łączy. Bez sensu to jest zawsze jakieś problemy.

0
  1. Obejrzyj konsolę Javy.
  2. Podpisałeś aplet? Niepodpisany aplet może się łączyć tylko ze stroną, z której przywędrował.
0

obydwie aplikacje tj. serwer i applet client uruchamiane są na tym samym komputerze. Podczas ładowania apletu przeglądarka pyta się czy zezwolić na uruchomienie to zawsze daję, że zgadzam się. Wszystko tak jakby było w porządku ale nie mogę się połączyć. Klikam na przycisk i nie ma połączenia.

0

Na operze działa, na FF nie sprawdzę (u mnie FF w ogóle nie uruchamia apletów), na IE można obejrzeć na konsoli Javy taki komunikat

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:2000 connect,resolve

Twój aplet nie jest podpisany. Ty wyrażasz zgodę (w IE zapewne) na uruchomienie apletu, a nie na to by aplet mógł więcej. Podpisywane są pliki jar, zatem znacznik applet dla uruchamiania podpisanych apletów wygląda tak:

<applet ...  archive="pewien.jar" ...>
</applet>
0

Na swojej maszynie dodatkowe uprawnienia możesz uzyskać przez dopisanie pewnych wierszy w pliku ..lib/security/java.policy
Dla pary twoich programów wystarczy dodać wiersz:

permission java.net.SocketPermission "localhost:1024-", "connect";

0

Jak wejść do tej konsoli Javy na IE ?

Chcę żeby bez żadnych ograniczeń uruchamiały się aplety oraz żeby nie było żadnego ograniczenia co do adresu internetowego i portu komunikacyjnego

0

Panel sterowania => Java => Advanced => Java console, i zaznacz Show console.
Podpisz aplet, poszukaj (np. na forum) jak się to robi.

0

Podpisałem aplet i zrobiłem go bardziej uniwersalnym (dodałem pytanie o host i port) i bez problemów łączy się z dowolnym hostem, na którym miałem prawo umieścić i odpalić MyServer.

0

Zobacz jak wygląda uruchomienie podpisanego ("prywatnie") apletu i jak się łączy z dowolnym EchoSerwerem. http://atos.wmid.amu.edu.pl/~bogdan/applets/PodpisanyAplet.php

0

dziękuje za wskazówki jak to uda mi się rozgryźć to napiszę

0

Chodzi mi tylko o aplikacje klienta. Chcę by działała bez problemu tzn. po pobraniu strony WWW czy to z odległego serwera jakiegoś czy bezpośrednio z dysku komputera na którym jest uruchomiony i żeby użytkownik nic nie grzebał w konfiguracji oprócz prostego potwierdzenia zgody na uruchomienie apletu.

Po załadowaniu strony WWW przeglądarka pyta się czy "zezwolić temu plikowi na uruchamianie
zawartości aktywnej" więc daję Tak. Pojawia się ten aplet w oknie przeglądarki. Następnie klikam na przycisk "Połącz" i w tym momencie aplikacja nie odpowiada przez ok. 10 sekund po czym w konsoli wyburacza mi takie śmieci:

Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.1.10:500 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at MyClient.actionPerformed(MyClient.java:64)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

A tu źródło strony WWW:

<html>
<head>
<title>Applet Client</title>
</head>
<body bgcolor="#EFEFEF" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<center><h0>Client Fatek V0.1</h0></center>
<center><applet width="150" height="120" code="MyClient.class"></applet></center>
</body>
</html>
0

Sukces ! Rozgryzłem [browar]

Faktycznie trzeba podpisać cyfrowo applet. Naprawdę nie jest to skomplikowane i szybko się to robi.

Zapoznajcie się z tekstem pod tym adresem http://www.linuxstorm.org/modules/sections/index.php?op=viewarticle&artid=78 w części INSTALUJEMY APPLET. Od siebie dodam, że archiwum jar tworzy się za pomocą komendy jar (dostępna w pakiecie JDK):

jar cf archiwum.jar klasa1.class klasa2.class ...

To archiwum jar u mnie tworzy się w dziwnym miejscu ale od czego jest wyszukiwarka windowsowa - znajdziecie.

Jeżeli chodzi o stronę WWW w html, która ładuje applet to musi być tego typu (różni się od podanej wcześniej):

<html>
<head>
<title>Applet Client</title>
</head>
<body bgcolor="#EFEFEF" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
<center><h0>Client Fatek V0.1</h0></center>
<center><applet width="150" height="150" code="MyClient.class" codebase="." archive="MyClient.jar"></applet></center>
</body>
</html>

Powodzenia

Pozdrawiam :-)

0

Napisałem

Twój aplet nie jest podpisany. Ty wyrażasz zgodę (w IE zapewne) na uruchomienie apletu, a nie na to by aplet mógł więcej. Podpisywane są pliki jar, zatem znacznik applet dla uruchamiania podpisanych apletów wygląda tak:
<applet ... archive="pewien.jar" ...>
</applet>

Mam wrażenie, że zadajesz pytania, ale odpowiedzi nie czytasz. Jeżeli potrzebujesz bardzo szczegółowych odpowiedzi, to pytaj w dziale Newbie.

0

bo dziękuję. [browar]

Czytałem to ale wcześniej nie myślałem o archiwach jar byłem zaślepiony tylko plikami class.

Dopiero teraz mniej więcej zakapowałem o co biega.

Pozdrawiam

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