Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 211

Клиент Сервер (Как сделать так, что бы Сервер считал этот код и давал ВЫВОД в форме)?

17.11.2015, 23:04. Показов 1365. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемые форумчанины!!!

У меня есть вот один код который считает массивы с определенными условиями вот он внизу, я вот хочу сделать так, что бы этот код был в сервере и когда я делал запрос, он выдавал мне его в форме с ответом (в окошке крч)
То есть я запросил , сервер ответил!

Сам код с Массивом!
Кликните здесь для просмотра всего текста
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
import java.util.Arrays;
 
public class Returnnnn {
    public static Object java;
    public static void main(String[] args) {
        // Создаю массивы
        int[] x = {3, 0, 12, 23, 12}; 
        int[] y = {87, -1, 45, 7, 29, 22};
        int[] z = {34, 4, 77, 102};
        int[] res = new int[3];
        // Получаю минимальный элемент каждого массива
        int a = min(x);
        int b = min(y);
        int c = min(z);
        // Заполняю массив, в котором будут храниться результаты, минимальными значениями
        res[0] = a;
        res[1] = b;
        res[2] = c;
        // Т.к. отсортировать нужно по возрастанию, первый элемент - минимальный из a, b, c
        res[0] = min(res);
        // Нахожу максимальный элемент и записываю его в конец res
        if (a >= c && a >= b) res[2] = a;
        else if (b >= c && b >= a) res[2] = b;
        else res[2] = c;
        // Теперь ищу элемент, который не является ни макс. ни мин (т.е. средний)
        // И записываю в середину
        if (res[0] != a && res[2] != a) res[1] = a;
        else if (res[0] != b && res[2] != b) res[1] = b;
        else res[1] = c;
 
        System.out.print("Результат :"+ Arrays.toString(res));
    }
    // Та "подпрограмма", о которой шла речь в задании
    public static  int min(int[] arr) { 
         // Записываю первый элемент массива в res
         int res = arr[0];
         // Иду в цикле по каждому элементу массива, начиная со второго (т.к. первый у нас уже в res)
         for (int i = 1; i < arr.length; i++)
             // Если нашёл элемент меньше чем res - записываю его как минимальный
            // Ну а если не нашёл таких - значит первый элемент массива и есть минимальный
            if (arr[i] < res)
                res = arr[i];
        return res;
    }
}

Стартовый класс программы (Все три класса внизу, клиент пишет любое сообщение в форме и передает в сервер, сервер принимает и отвечает клиенту типа я Прислал такое сообщение итд)
Кликните здесь для просмотра всего текста
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.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
 
/**
 * Стартовый класс программы
 */
public class Main {
    static JLabel l1;
    public static void setL1(String s) {
        l1.setText(s);
    }
 
    static Server s = new Server();
    static Thread th = new Thread (s);
    static JButton b1 = new JButton("Send");
    static JTextField t1 = new JTextField(10);
    static JFrame frame = new JFrame("Message");
    static Connector cn = new Connector();
    
    /**
     * @param args Массив аргументов для программы.
     */
    public static void main(String[] args) {    
        th.start();
        l1 = new JLabel("");
        Thread th1 = new Thread(cn);
        th1.start();
        l1.setText("Соединения устанавливаются...");
        createGUI();    
    }
 
    /**
     * Метод для создания интерфейса
     */
    private static void createGUI() {
        frame.setLayout(new FlowLayout());
        frame.add(l1);
        frame.add(t1);
        frame.add(b1);
        frame.pack();
        frame.setSize(340, 340);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        b1.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==b1){
                    cn.sendData(t1.getText());
                }
            }
        });
    }
}


Класс для сервера
Кликните здесь для просмотра всего текста
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
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
 
/**
 * Класс для сервера
 */
public class Server implements Runnable{
    private ObjectOutputStream output;
    private ObjectInputStream input;
    private ServerSocket server;
    private Socket connection;
    private boolean isRunning = true;
    
    /**
     * Метод для старта сервера
     * <br>
     * <br>
     * Открывает и устаннавливает соединения и потоки.
     * Принимает входящий поток и отправляет его с припиской назад.
     */
    public void ServerStarter(){
        try{
            server = new ServerSocket(1234, 100);
            while (isRunning) {
                connection = server.accept();
                output = new ObjectOutputStream(connection.getOutputStream());
                output.flush();
                input = new ObjectInputStream(connection.getInputStream());
                output.writeObject("Вы прислали: "+input.readObject());
                output.flush();
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            close();
        }
    }
    
    /**
     * Метод для закрытия потоков и соединений.
     */
    private void close() {
        try{
            output.close();
            input.close();
            connection.close();
            isRunning = false;
        }catch(Exception e){e.printStackTrace();}
    }
 
    @Override
    public void run() {
        ServerStarter();
    }
 
}

Класс для связи с сервером
Кликните здесь для просмотра всего текста
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
60
61
62
63
64
65
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JOptionPane;
 
/**
 * Класс для связи с сервером
 * Класс, выполняемый в отдельном потоке, 
 * предназначенный для установления соединения 
 * между клиентом и сервером
 */
public class Connector implements Runnable{
    private static ObjectOutputStream output;
    private static ObjectInputStream input;
    private static Socket connection;
    private static boolean isRunning = true;
    
    /**
     * Метод стартующий при запуске потока.
     * Устанавливает соединения и начинает читать input.
     */
    @Override
    public void run() {
        try {
            while(isRunning){
                connection = new Socket(InetAddress.getByName("127.0.0.1"), 1234);
                output = new ObjectOutputStream(connection.getOutputStream());
                output.flush();
                input = new ObjectInputStream(connection.getInputStream());
                Main.setL1("Соединение установленно");
                JOptionPane.showMessageDialog(null, (String)input.readObject());
            }
            close();
        }catch(Exception e) {e.printStackTrace();}
    }
    
    /**
     * Передает данные на сервер.
     * 
     * @param s Строка, которую нужно передать.
     */
    public void sendData(String s){
        try {
            output.flush();
            output.writeObject(s);
            output.flush();
        } catch (Exception e) {e.printStackTrace();}
    }
    
    /**
     * Закрывает соединения
     * Метод закрывает соединения, чтобы не возникало 
     * дальнейших проблем при последующем запуске приложения
     */
    public void close() {
        try {
            isRunning = false;
            output.close();
            input.close();
            connection.close();
        } catch (Exception e) {e.printStackTrace();}
    }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2015, 23:04
Ответы с готовыми решениями:

Как сделать так, что бы можно было вводить данные в форму и давал вывод в той же форме?
вот сам код! import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.Random; import...

Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер
Здравствуйте. Интересует информация о взаимодействии WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер через ОРС-инфтерфейс. ...

Http-сервер: Как сделать чтоб этот сервер понимал файлы расширением .php и .aspx
Здравствуйте друзья Как сделать чтоб этот сервер понимал файлы расширением .php и .aspx? Простые странички он понимает нормально ...

6
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 211
20.11.2015, 18:56  [ТС]
Ауу
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.11.2015, 19:20
вопрос задай
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 211
20.11.2015, 19:46  [ТС]
Как сделать так, что бы Сервер считал этот код и выдавал ВЫВОД в форме?
То есть, клиент пишет в форму определенные числа и отправляет в сервер, сервер считает по этому коду (Внизу который) и дает вывод клиенту с ответом виде формы (типа "Ваш ответ : итд" в окошке)
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
import java.util.Arrays;
 
public class Returnnnn {
    public static Object java;
    public static void main(String[] args) {
        // Создаю массивы
        int[] x = {3, 0, 12, 23, 12}; 
        int[] y = {87, -1, 45, 7, 29, 22};
        int[] z = {34, 4, 77, 102};
        int[] res = new int[3];
        // Получаю минимальный элемент каждого массива
        int a = min(x);
        int b = min(y);
        int c = min(z);
        // Заполняю массив, в котором будут храниться результаты, минимальными значениями
        res[0] = a;
        res[1] = b;
        res[2] = c;
        // Т.к. отсортировать нужно по возрастанию, первый элемент - минимальный из a, b, c
        res[0] = min(res);
        // Нахожу максимальный элемент и записываю его в конец res
        if (a >= c && a >= b) res[2] = a;
        else if (b >= c && b >= a) res[2] = b;
        else res[2] = c;
        // Теперь ищу элемент, который не является ни макс. ни мин (т.е. средний)
        // И записываю в середину
        if (res[0] != a && res[2] != a) res[1] = a;
        else if (res[0] != b && res[2] != b) res[1] = b;
        else res[1] = c;
 
        System.out.print("Результат :"+ Arrays.toString(res));
    }
    // Та "подпрограмма", о которой шла речь в задании
    public static  int min(int[] arr) { 
         // Записываю первый элемент массива в res
         int res = arr[0];
         // Иду в цикле по каждому элементу массива, начиная со второго (т.к. первый у нас уже в res)
         for (int i = 1; i < arr.length; i++)
             // Если нашёл элемент меньше чем res - записываю его как минимальный
            // Ну а если не нашёл таких - значит первый элемент массива и есть минимальный
            if (arr[i] < res)
                res = arr[i];
        return res;
    }
}
Добавлено через 7 минут
Паблито, По видео уроком написал три класса "Клиент - сервер", но там просто обмен сообщениями (Сверху три класса его), а как сделать так что бы сервер допустим считал по запросам клиента например некую математическую формулу, или там массивы, например я пишу в форму числа или там заполняю массивы для обработки задачи, сервер принял и дал ответ на мою задачу!
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 211
29.11.2015, 15:05  [ТС]
ХЕЛП
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
30.11.2015, 12:54
да никто за тебя писать не будет
вопрос звучит именно так - напишите за меня, иначе ты давно уже бы разбил задачу на десяток более мелких и решил по очереди
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 211
30.11.2015, 20:05  [ТС]
Слушай, я уже пытался сделать это, но не могу, я могу скинут десяток штук своих вариантов но там половина просто не правильно, ни одного примера нету на такую тематику , а передать сообщение и тупа сделать вывод это фигня!
Я не прошу писать за меня, я прошу помочь, а тут даже ни одной подсказки нету , а ты ересь тут пишешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2015, 20:05
Помогаю со студенческими работами здесь

Как сделать , что бы этот код был в форме и открывался и выдавал данные в форме?
Первый Case 1 , что бы можно было направить в кнопку , при нажатие на кнопку , можно было писать данные вручную (Как через терминал ну или...

Как сделать что бы этот код был в форме и выдавал данные в этой же форме
Первый Case 1 , что бы можно было направить в кнопку , при нажатие на кнопку , можно было писать данные вручную (Как через терминал ну или...

Сделать так, чтобы как только сервер включился, клиент подключился к нему
Дано : неактивный сервер и активный (запущенный) клиент. Как прописать, чтобы как только сервер включился, клиент подключился к нему. Т.е....

Как сделать так чтобы клиент сам находил сервер в локальной сети?
Допустим у нас есть сервер: using System; using System.Text; using System.Net; using System.Net.Sockets; namespace...

Как сделать так что бы этот код заработал
Всем привет, вот решил поработать с потоками и столкнулся с такой проблемой, что нужно два потока в программе и не могу сделать. TMyTr...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru