Socket + Applet - nic nie działa

Socket + Applet - nic nie działa
agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Witam,

W sieci jest sporo przykładów użycia javy i socketów jednak i tak sa problemy.

Mam serwer napisany w C++ nasłuchuje na porcie 5000. Mam klienta napisanego w javie jako applet i podczas próby połączenia nie łączy się. Program uruchomiony nie jako applet łączy sie z serwerem i wysyła dane. Czy applet ma mieć jakąś inną konfiguracje, ustawienia czy jak to jest. Potrzebuję aby applet łączył się z serwerem.

Pozdrawiam.

LN
  • Rejestracja:około 16 lat
  • Ostatnio:12 miesięcy
  • Postów:1398
0

Bodajże aplet może łączyć się tylko z serwerem, którego pochodzi (SecurityManager czy jakoś tak się tym zajmuje)

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Podpisz aplet, poszukaj na forum jak się to robi.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

A jak się applet podpisuje - wpisałam w google java applet podpisanie i nic konkretnego nie widać - da mi ktos przykładowego linka.

Zmiana do java.policy - dopisanie

Kopiuj
grant
{
  // Pelne uprawnienia dla wszystkich ladowanych zdalnie klas
  permission java.security.AllPermission; 
};

i pomogło.

Jako że nie znam javy chciałabym aby ktoś mógł opisać jak takie coś mam wykonać.
Chodzi o napisanie z grubsza co powinno być w wątku a co nie. Może coś trzeba synchronizować?

A więc coś w stylu web-gadu
Otwieram stronę www i uruchamia mi się applet.
Mogę wpisać swój nick i hasło - klikam zaloguj.
Wow zalogowałam się i otrzymałam listę moich znajomych.

Patrzę kto jest dostępny to jemu wysyłam wiadomość 'hej co słychac'.

Za realizacje listy użytkowników i kto jest dostępny odpowiada serwer. Przyjmijmy założenie że serwer działa i jest ok.

Za odpowiedź przyjmuje wpis:

Kopiuj
Funkcja conect to jeden wątek.
Funkcje wysyłanie i odbieranie danych są w dwóch wątkach.
Odbieranie danych trzeba synchronizować

Oczywiście co tu napisałam to mi się tak wydaje - ale chcę uzyskać odpowiedź od kogoś kto zna javę. Bo ja dziś ją się uczę drugi dzień.
Pozdrawiam.

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

http://4programmers.net/Forum/449613?h=jarsigner#id449613
Usuń natychmiast ten wpis

Kopiuj
grant
{
  // Pelne uprawnienia dla wszystkich ladowanych zdalnie klas
  permission java.security.AllPermission;
};

upoważniłaś wszystkie aplety na świecie do czytania i pisania na Twoim dysku.</quote>


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Dziękuje za ostrzeżenie - chwila nie uwagi i mogło by byc nieciekawie.

Zmodyfikowałam plik java.policy

ten fragment

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

na ten

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

To chyba bezpiecznie - czy to znaczy że po uruchomieniu appletu może on wykonać połączenie z serwerem który jest na lokalnym dysku.

A co tu zrobić jak serwer jest na innym komputerze uruchomiony?
Bo przecież jak użytkownik wejdzie na stronę to od razu otrzyma błąd -
on ma tylko takie pozwolenie java.net.SocketPermission "localhost:1024-", "listen";

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Podpisz wreszcie ten aplet, przecież u innych użytkowników nie zmienisz zawartości pliku java.policy.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0
0

Przecież dwa posty wcześniej wkleiłem link opisujący jak możesz sama podpisać aplet.
http://4programmers.net/Forum/[...]49613&h=jarsigner#id449613

agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Niestety ale po podpisaniu appletu mam inny błąd.

Kopiuj
Java Plug-in 1.6.0_14
Using JRE version 1.6.0_14-b08 Java HotSpot(TM) Client VM
User home directory = C:\Users\JA
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\JA\workspace\Klient\bin read)
	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.checkRead(Unknown Source)
	at java.io.File.isDirectory(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.getPermissions(Unknown Source)
	at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at AppletClient.init(AppletClient.java:33)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception: java.security.AccessControlException: access denied (java.io.FilePermission C:\Users\JA\workspace\Klient\bin read)

a kod html wygląda tak

Kopiuj
<html>
<head>
    <title> Applet Witaj </title>
</head>
<body>
    <h1>Applet socket Witaj:</h1>
    
    <APPLET CODE="AppletClient.class" 
        ARCHIVE="AppletClientJar.jar"
        width=300
        height=120>
     </APPLET>   

</body>
</html>
0

Przy otwieraniu strony z podpisanym powinno pojawić się pytanie o zgodę na uruchomienie.
user image lub user image (zależnie od przegłądarki).
Pojawiło się?
Po skompilowaniu apletu, utworzeniu i podpisaniu pliku jar, trzeba na nowo uruchomić przeglądarkę, inaczej korzysta ona z poprzedniej wersji apletu.
Program appletviewer nie respektuje podpisu.

agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Ok teraz działa - źle podpisywałam plik JAR.

Dzięki za pomoc
Pozdrawiam

0

Jeszcze jedna uwaga, Twój aplet czyta coś z pliku lokalnego

C:\Users\JA\workspace\Klient\bin
To nie jest dobry pomysł. Inni użytkownicy apletu nie mają tego pliku.

agnieszka
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 15 lat
  • Postów:97
0

Tu było tylko czytanie z pliku JAR - a tam była dodana tylko jedna klasa a tak naprawde w pliku JAR mam dwie klasy.

Jednakże ciesze się że kwestie związane z bezpieczeństwem i zdalnym uruchomieniem appletu mam już za sobą - teraz mogę zająć się właściwym tworzeniem/ budowaniem projektu.

Pozdrawiam.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)