Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 30.11.2019
Сообщений: 26

Протокол UDP

10.05.2021, 15:39. Показов 1565. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите, пожалуйста, простой UDP-сервер на Java, который будет выводить все входящие пакеты и завершать работу после получения строки 'end'.
Напишите, пожалуйста, соответствующий UDP-клиент, который будет посылать сообщения.

Буду очень благодарен вашей помощи

Добавлено через 8 минут
Сервер:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.*;
import java.net.*;
 
class UDPServer
{
   public static void main(String args[]) throws Exception
      {
         DatagramSocket serverSocket = new DatagramSocket(9876);
         byte[] receiveData = new byte[1024];
         byte[] sendData = new byte[1024];
         DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
         serverSocket.receive(receivePacket);
         String sentence = new String( receivePacket.getData(), 0, receivePacket.getLength());
         System.out.println("RECEIVED BYTES: " + receivePacket.getLength());
         System.out.println("RECEIVED: " + sentence);
         
         InetAddress IPAddress = receivePacket.getAddress();
         int port = receivePacket.getPort();
         String capitalizedSentence = sentence.toUpperCase();
         sendData = capitalizedSentence.getBytes();
         DatagramPacket sendPacket =
         new DatagramPacket(sendData, sendData.length, IPAddress, port);
         serverSocket.send(sendPacket);
         System.out.print("Press enter to finish");
         System.in.read();
      }
}

Клиент:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.*;
import java.net.*;
 
class UDPClient
{
   public static void main(String args[]) throws Exception
   {
      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("localhost");
      byte[] receiveData = new byte[1024];
      String sentence = inFromUser.readLine();
      byte[] sendData = new byte[sentence.length()];
      sendData = sentence.getBytes();
      System.out.println("Length:" + sentence.length());
 
      DatagramPacket sendPacket = new DatagramPacket(sendData, sentence.length(), IPAddress, 9876);
      clientSocket.send(sendPacket);
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
      clientSocket.receive(receivePacket);
      String modifiedSentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
      System.out.println("FROM SERVER:" + modifiedSentence);
      clientSocket.close();
      System.out.print("Press enter to finish");
      System.in.read();
   }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2021, 15:39
Ответы с готовыми решениями:

Протокол и байт
Реализовал тестовый протокол , и возникла проблема с байтом. Точней мне не хватает его емкости ... Может кто посоветует что можно придумать?

UDP
Добрый вечер! Разбираюсь с TCP, задание такое: дано выражение \sum_{n=a}^{b}(n*(n-1)) - \sum_{n=b}^{c} 2n / (n-1). У клиента спрашивают...

Протокол взаимодействия UDP
Помогите пожалуйста, необходимо обеспечить поиск и замену слов в текстовом файле. Клиент посылает серверу искомое слово и слово для замены....

1
 Аватар для Сиггрид
48 / 35 / 16
Регистрация: 19.11.2010
Сообщений: 107
15.06.2021, 19:16
Кажется, ТС имел в виду что-то подобное:
Клиент:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.io.*;
import java.net.*;
 
public class UDPClient {
    
    private static String[] data = {"We", "never", "thought", "it", "was", "the", "end"};
    private DatagramSocket clientSocket;
    InetAddress addr;
    DatagramPacket packet;
    
    public static void main(String[] args)
    {
        UDPClient client = new UDPClient();
        client.send();
        
    }
    
    public UDPClient()
    {
        try
        {
            clientSocket = new DatagramSocket();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
    protected void send()
    {
        try
        {
            addr = InetAddress.getByName("localhost");
            for (String s : data)
            {
                byte[] byteArray = s.getBytes();
                packet = new DatagramPacket(byteArray, byteArray.length, addr, 2005);
                clientSocket.send(packet);
            }
            
            System.out.println("Datagram sent");
            clientSocket.close();
            
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
}
Сервер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.io.*;
import java.net.*;
 
public class UDPServer {
    
    public static final int PORT = 2005;
    private DatagramSocket servSocket;
    private boolean keepRunning = true;
    String output;
    
    public static void main(String[] args) {
        
        UDPServer server = new UDPServer();
        server.service();
   }
    
    public UDPServer()
    {
        try
        {
            servSocket = new DatagramSocket(PORT);
            
        }
        catch(SocketException e)
        {
            System.err.println("Unable to open socket : " + e.toString());
        }   
    }
    
    protected void service() {
        
        DatagramPacket datagram;
        byte[] data;
      
        while (keepRunning)
        {
            try {
                data = new byte[7];
                datagram = new DatagramPacket(data, data.length);
                servSocket.receive(datagram);
            
                output = new String(data,  0, datagram.getLength());
                System.out.print(output + " ");
            
                if (output.equals("end")) 
                {
                    keepRunning = false;
                    System.out.println("\nDatagram received");
                }
            
            
            } catch(IOException e) {
             
                System.err.println("I/O Exception : " + e.toString());
            }
        }
        servSocket.close();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2021, 19:16
Помогаю со студенческими работами здесь

Стандартный протокол сериализации
Здравствуйте в задании сказано что запрещено использовать стандартный протокол сериализации как тогда сохранить массив объектов?

Протокол для приложения
Подскажите может кто то когда то пробовал использовать собственный протокол (ftp:// (для наглядного примера о чем идет речь) ) для...

что за протокол https ?
строка URL url = new URL('https://star/'); мне выдаётся MalformedURLException :unknown protocol : https что мне делать а star...

Fx - протокол и java fx -это одно и то же?
Часто вижу в требованиях вакансий: "Знание fx протокола". Так вот мне не совсем понятно JavaFX - это и есть протокол, то есть некоторый...

Протокол между БД и Java приложения
Доброго времени суток! На этапе проектирования столкнулся с такой проблемой! Есть приложение JAVA использующее Hibernate и работает с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru