Gniazda itp

0

sciagnolem sobie z pewnej ksiazki przyklad
jest Puls.java - serwer
i jest BicieSerca.java -klient jako applet
no i bajer polega na tym ze dzialami ten kod na localhoscie a jakwrzucam gdzies indziej to lipa z nedza

//plik: Puls.java
import java.net.;
import java.io.
;

public class Puls {
public static void main( String [] argum ) throws IOException {
DatagramSocket s =
new DatagramSocket( 1234 );

    while ( true ) {
        DatagramPacket pakiet =
          new DatagramPacket(new byte [1024], 1024);
        s.receive( pakiet );
        String komunikat = new String( pakiet.getData(  ) );
        System.out.println( "BicieSerca z: "
          + pakiet.getAddress().getHostName(  )
          + " - " + komunikat );
    }
}

}

//plik: BicieSerca.java
import java.net.;
import java.io.
;

public class BicieSerca extends java.applet.Applet {
String host;
int port;

public void init(  ) {
    host = getCodeBase().getHost(  );
    port = Integer.parseInt( getParameter("port") );
}

private void wyslijKomunikat( String komunikat ) {
    try {
        byte [] dane = komunikat.getBytes(  );
        InetAddress adr = InetAddress.getByName( host );
        DatagramPacket pakiet =
          new DatagramPacket(dane, dane.length, adr, port );
        DatagramSocket ds = new DatagramSocket(  );
        ds.send( pakiet );
        ds.close();
    } catch ( IOException e ) {
        System.out.println( e );  // Bd w trakcie tworzenia gniazda
    }
}

public void start(  ) {
    wyslijKomunikat("Przyby");
}
public void stop(  ) {
    wyslijKomunikat("Opuci");
}

}

<applet height="10" width="10" code="BicieSerca"> <param name="port" value="1234"> </applet>

jkaby mi ktos powiedzial o co chodzi to bylbym wdzieczny

0

Co to znaczy ze wrzucasz gdzie indziej??
Podaj wiecej szczegolow to moze bede mogl pomoc :)

Krissus

0

ten aplet wrzucam na jakis serwer np interie czy cos w tym guscie

0

To dlatego, że aplety ze względów bezpieczeństwa mają ograniczenia w dostępie do zasobów. Aplet nie może połączyć się z aplikacją serwera znajdującą się na innym hoście niż on sam.

Zwróć uwagę na kod:
public void init( ) {
host = getCodeBase().getHost( );
port = Integer.parseInt( getParameter("port") );
}

host to adres hosta, na którym znajduje się kod. Jeśli byłaby inna możliwość twórca kodu z pewnością by napisał: host = getParameter("host");

Pozdrawiam

0

to jak przerobic ( czy w ogoleod nowa zrobic )cos takiego zeby to bylo JFrame a nie JApplet

0

tzn chodzi mi tu o jedna rzecz jak na razie
w funkcji init()
jest takie cos

host = getCodeBase().getHost( );

i to nie dziala mi pod JFrame gdyz tojest z java.applet.Applet
jak dam
host="";
to dziala nma lokalhoscie na razie nie mam jak sprawdzic czy zadziala ogolnie ale nie sadze
czy ktosmi mozepodpowiedziec coz tym fantem zrobic

0

Z przerobieniem na JFrame raczej nie ma problemu - musisz tylko jawnie wywołać metodę init, np w konstruktorze i oczywiście główna klasa nie może dziedziczyć po Applet tylko po JFrame. Zamiast host = getCodeBase().getHost( ); możesz napisać host = "localhost"; albo ew adres IP kompa na którym odpaliłeś serwer.

Pozdrawiam

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