Пример 4.2. Организация пересылки datagram на основе UDP соединения Организуем сервер, который в ответ на запрос клиента (полученный пакет (датаграмму)) будет возвращать ему пакет с текущей датой и временем, который распечатывается на компьютере клиента. Серверная часть приложения: import java.net.*; import java.util.*; public class UDPServer { //заголовок класса public UDPServer() { //конструктор try { System.out.println("Receiving packets..."); //вывод сообщения DatagramSocket ds=new DatagramSocket(61); //номер прослушиваемого порта while (true) { // бесконечный цикл Date date; byte data[]=new byte[6]; //организация массива под дату DatagramPacket dp = new DatagramPacket(data, 6); //заготовка пакета ds.receive(dp); //ожидение обращения int clientPort=dp.getPort(); //получить номер порта клиента InetAddress clientAddress=dp.getAddress(); //получить адрес узла клиента date = new Date(); //организовать объект data[0]=(byte)date.getDate(); //получить число, месяц, год, мин., сек. data[1]=(byte)date.getMonth(); data[2]=(byte)date.getYear(); data[3]=(byte)date.getHours(); data[4]=(byte)date.getMinutes(); data[5]=(byte)date.getSeconds(); //организовать пакет для клиента dp = new DatagramPacket(data, 6, clientAddress, clientPort); //выдать сообщение System.out.println("Sending packets..."); ds.send(dp); //отослать пакет клиенту System.err.println("After"); //сообщить } } catch(Exception exc) { //обработка исключений exc.printStackTrace(); } } public static void main(String[] args) { UDPServer udpServer = new UDPServer(); //создать объект udpServer }} Клиентская часть приложения: import java.net.*; public class UDPClient { public UDPClient(String server) { try { DatagramSocket ds = new DatagramSocket(); byte data[]=new byte[6]; DatagramPacket dp=new DatagramPacket(data, 6, InetAddress.getByName(server), 61); ds.send(dp); System.out.println("Waiting for data..."); dp=new DatagramPacket(data, 6); ds.receive(dp); System.out.println("Data's received."); //формирование даты в удобочитаемом виде и распечатка даты System.out.print("Date:"+data[0]+"."+(data[1]+1)+"."+(data[2]+1900)+" Time:"+data[3]+"."+data[4]+"."+data[5]); } catch(Exception exc) { //обработка исключительных ситуаций exc.printStackTrace(); } } public static void main(String[] args) { //при запуске указать доменное имя UDPClient udpClient = new UDPClient(args[0]); //сервера } } Задания для самостоятельного выполнения Разработать приложение на основе UDP-соединения, позволяющее осуществлять взаимодействие клиента и сервера по совместному решению задач обработки информации. Приложение должно располагать возможностью передачи и модифицирования получаемых (передаваемых) данных. Возможности клиента: – передать серверу исходные параметры (вводятся с клавиатуры) для расчета значения функции; – получить расчетное значение функции Возможности сервера: – по полученным от клиента исходным параметрам рассчитать значение функции; – передать клиенту расчетное значение функции; – сохранить исходные параметры и значение функции в файл. Варианты: 1. Y=  2. Y=  3. Y=  4. Y=  5. Y=  6. Y=  7. Y=  8. Y=  9. Y=  10. Y= ) 11. Y=  12. Y=  13. Y=  14. Y=  15. Y=  16.  17.  18.  19.  20.  21.  22.  23.  24.  25.  26.  27.  28.  29.  30.  |