Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    Работа по протоколу UDP

    Для посылки дейтаграмм отправитель и получатель создают сокеты дейта-граммного типа. В Java их представляет класс DatagramSocket. В классе три конструктора:

    • DatagramSocket () — создаваемый сокет присоединяется к любому свободному порту на локальной машине;
    • DatagramSocket (int port) — создаваемый сокет присоединяется к порту port на локальной машине;
    • DatagramSocket(int port, InetAddress addr) — создаваемый СОКСТ при соединяется к порту port; аргумент addr — один из адресов локальной машины.

    Класс содержит массу методов доступа к параметрам сокета и, кроме того, методы отправки и приема дейтаграмм:

    • send(DatagramPacket pack) — отправляет дейтаграмму, упакованную в пакет pack;
    • receive (DatagramPacket pack) — дожидается получения дейтаграммы и заносит ее в пакет pack.

    При обмене дейтаграммами соединение обычно не устанавливается, дейтаграммы посылаются наудачу, в расчете на то, что получатель ожидает их. Но можно установить соединение методом

    connect(InetAddress addr, int port)

    При этом устанавливается только одностороннее соединение с хостом по адресу addr и номером порта port — или на отправку или на прием дейтаграмм. Потом соединение можно разорвать методом

    disconnect()

    При посылке дейтаграммы по протоколу JJDP сначала создается сообщение в виде массива байтов, например,

    String mes = "This is the sending message."; 

    byte[] data = mes.getBytes();

    Потом записывается адрес — объект класса inetAddress, например: 

    InetAddress addr = InetAddress.getByName (host);

    Затем сообщение упаковывается в пакет — объект класса DatagramPacket. При этом указывается массив данных, его длина, адрес и номер порта:

    DatagramPacket pack = new DatagramPacket(data, data.length, addr, port)

    Далее создается дейтаграммный сокет

    DatagramSocket ds = new DatagramSocket()

    и дейтаграмма отправляется

    ds.send(pack)

    После посылки всех дейтаграмм сокет закрывается, не дожидаясь какой-либо реакции со стороны получателя:

    ds.close ()

    Прием и распаковка дейтаграмм производится в обратном порядке, вместо метода send () применяется метод receive (DatagramPacket pack).

    В листинге 19.5 показан пример класса Sender, посылающего сообщения, набираемые в командной строке, на localhost, порт номер 1050. Класс Recipient, описанный в листинге 19.6, принимает эти сообщения и выводит их в свой стандартный вывод.

    Листинг 19.5. Посылка дейтаграмм по протоколу UDP

    import java.net.*; 

    import java.io.*;

    class Sender{

    private String host; 

    private int port; 

    Sender(String host, int port){ 

    this.host = host; 

    this.port = port; 

    }

    private void sendMessage(String mes){ 

    try{

    byte[] data = mes.getBytes();

    InetAddress addr = InetAddress.getByName(host);

    DatagramPacket pack =

    new DatagramPacket(data, data.length, addr, port); 

    DatagramSocket ds = new DatagramSocket(); 

    ds.send(pack); 

    ds.close();

    }catch(IOException e){

    System.err.println(e); 

    public static void main(String[] args){

    Sender sndr = new Sender("localhost", 1050); 

    for (int k = 0; k < args.length; k++)

    sndr.sendMessage(args[k]); 

    }

    Листинг 19.6. Прием дейтаграмм по протоколу UDP

    import j ava.net.*; 

    import java.io.*;

    class Recipient{

    public static void main(String[] args)( 

    try{

    DatagramSocket ds = new DatagramSocket(1050); 

    while (true){

    DatagramPacket pack =

    new DatagramPacket(new byte[1024], 1024); 

    ds.receive(pack);

    System.out.println(new String(pack.getData())); 

    )catch(Exception e){

    System.out.println(e); 

    }

     

    -
    



    Copyright © vzlom-1.ru 2020-2023