Показать сообщение отдельно
  #14 (permalink)  
Старый 05.01.2012, 13:23
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

кажется я понял задачу чуть глубже, ну тогда как то так.

код javaScript
//ccылка на апплет для доступа к методам аплета
           udp=document.applets[0];

           // определяем куда конектимся
           udp.connect("localHost",1500);

           //отправляем запрос
           udp.SetQuere ("hello World");

           // получаем ответ
           function test (data){ 
             alert (data);
           }



Java апплет
import java.awt.*;
// это класс аплета
import java.applet.Applet;

//это для сетки
import java.net.*; 
//нужно для вывода
import java.io.*;
//нужно для вызова методов javaScript
import netscape.javascript.*;

//наш аплет это дочерний класс от класса Applet.
public class myapplet extends Applet {
  //переменная с адресом устанавливается методом connect и храниться в аплете 
  private String host; 
  //переменная с портом устанавливается методом connect и храниться в аплете 
  private int port; 

  // метод инициализации данных для соединения вызывается из javaScript
  public void Connect (String host, int port){ 
         this.host = host; //устанавливаем адрес
         this.port = port; //устанавливаем порт
  }

  // этот метод мы будем вызывать из javaScript для отправления пакета, и последующего получения ответа
  public void sendQuere(String mes){ 
        try{
            // превращаем строку в последовательность байт
            byte[] data = mes.getBytes();

            // получим ip адрес
            InetAddress addr = InetAddress.getByName(host);

            //создадим дейтаграмный пакет
            DatagramPacket pack = new DatagramPacket(data, data.length, addr, port); 

            //создается дейтаграммный сокет
            DatagramSocket ds = new DatagramSocket(); 

            //дейтаграмма отправляется
            ds.send(pack); 
            // закрываем сокет
            ds.close();

            // ура, данные мы отправили давайте теперь дождёмся ответа, хотя за ответами мог бы и другой аплет следить

            // создадим сокет,  устанавливать сокет можно также из метода connect если угодно, но здесь он у нас вписан намертво
            DatagramSocket ds = new DatagramSocket(1050);
            // пакет
            DatagramPacket pack =new DatagramPacket(new byte[1024], 1024);
            // ждём получения пакета
            ds.receive(pack);

         //действие после получения пакета с данными

        // вывод (пример 1, пригодится для отладки)   
        System.out.println(new String(pack.getData()));
 
       // передача данных в javaScript(пример 2)
             // получить ссылку на окно (объект window)
             JSObject win = JSObject.getWindow(this);

             //  создадим массив аргументов
             String argums[] = new String[1];

             // аргументы
             // при передачи датаграммы из pack.getData() на javaScript, привести данные из pack.getData() к массиву params нужно будет здесь.
             argums[0] = "My message";
             // вызовем пользовательский метод test на JavaScript
             win.call("test", argums);         

        }catch(IOException e){
            System.err.println(e); 
        } 
  } 

  public void init() {
      //инициализация чего нибудь в момент создания аплета, если нужно ))
  }  
}

код html

<APPLET CODE=myapplet.class WIDTH=150 HEIGHT=25>
       </APPLET>


p.s.

Код написан только по документации, и непреверен. Так что со всем этим добром я бы на вашем месте обратился на java форум дабы они указали на ошибки или за скромную плату довели пример до рабочего состояния.

Надеюсь хоть как-то помог.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 05.01.2012 в 14:50.
Ответить с цитированием