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

Клиент-сервер

27.01.2016, 10:55. Показов 998. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, задача написать клиент-сервер. Принцип такой: есть сервер и несколько клиентов, как только на одном из клиентов изменяется xml файл, он отправляется серверу, а он в свою очередь отправляет его всем остальным клиентам. Клиенты постоянно ожидают приёма, но так же могут отправлять.
Вот что есть:
Клиент:
Кликните здесь для просмотра всего текста
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 org.xml.sax.SAXException;
 
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import java.net.Socket;
 
public class client {
 
    public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
 
 
        //Socket clientsocket = null;
        try {
            //clientsocket = new Socket("localhost", 16789);
            clientsrc cl = new clientsrc(new Socket("localhost", 16789));
            System.out.println("complete connection");
            cl.send();
            System.out.println("complete send");
            cl.receive();
            System.out.println("Complete receive");
 
        } catch (IOException e) {
            System.err.println(e);
        }
 
    }
 
    private static class clientsrc {
        private Socket socket;
 
        private clientsrc(Socket s) throws IOException {
            this.socket = s;
        }
 
        public void send() throws FileNotFoundException {
            FileReader xml = new FileReader("test.xml");
            BufferedReader reader = new BufferedReader(xml);
            try {
                String line;
                BufferedWriter pr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                while ((line = reader.readLine()) != null) {
                    pr.write(line);
                }
            } catch (Exception e) {
                System.err.println("err in send to srv" + e);
            }
        }
 
        public void receive() {
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String line2;
                FileWriter xml2 = new FileWriter(new File("test2.xml"));
                while ((line2 = br.readLine()) != null) {
                    System.out.println(line2);
                    xml2.write(line2);
                }
 
            } catch (Exception e) {
                System.err.println("err in receive" + e);
            }
        }
 
    }
}

сервер:
Кликните здесь для просмотра всего текста
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
 
public class server {
 
    static Socket clientSocket = null;
    static ServerSocket serverSocket = null;
 
    static List<clientThread> clientThreads = new ArrayList();
 
    public static void main(String args[]) {
 
        int port_number = 16789;
 
        try {
            serverSocket = new ServerSocket(port_number);
        } catch (IOException e) {
            System.out.println(e);
        }
 
        while (true) {
            try {
                clientSocket = serverSocket.accept();
                clientThread client = new clientThread(clientSocket, clientThreads);
                clientThreads.add(client);
                client.start();
            } catch (IOException e) {
                System.out.println(e);
            }
        }
    }
}
 
class clientThread extends Thread {
 
    BufferedReader is = null;
    BufferedWriter os = null;
    Socket clientSocket = null;
    List<clientThread> clientThreads;
 
 
    public clientThread(Socket clientSocket, List<clientThread> clientThreads) {
        this.clientSocket = clientSocket;
        this.clientThreads = clientThreads;
    }
 
    public void run() {
        String line;
        try {
            is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            os = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
            //Thread.sleep(10000);
            if((line = is.readLine()) != null) {
                System.out.println(line);
            }
            while (true) {
                System.out.println("start");
                while ((line = is.readLine()) != null) {
                    System.out.println("entered");
                    line = is.readLine();
 
                    for (clientThread client : clientThreads) {
                        Thread.sleep(10000);
                        if (!client.equals(this)) {
                            client.os.write(line);
                        }
 
                    }
                }
            }
 
 
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
                os.close();
                clientSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
}

и xml типа:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<library>
    <genre name="Post-hardcore" tempo="Variable">
        <track name="Understanding In A Car Crash" artist="Wolves At The Gate" album="Back To The School" duration="4:24"/>
        <track name="NJ legion Nice" artist="A Day To Remember" album="Homesick" duration="3:21"/>
        <track name="It's Complicate" artist="A Day To Remember" album="Homesick" duration="4:94"/>
        <track name="Deadbolt" artist="Wolves At The Gate" album="Back To The School" duration="6:24"/>
        <track name="Listen Through Me" artist="Thrice" album="Major Minor" duration="7:24"/>
        <track name="Violence" artist="A Day To Remember" album="Common Courtesy" duration="1:24"/>
    </genre>
    <genre name="Hip-Hop" tempo = "Yo">
        <track name="Kill Everyone" artist="Hollywood Undead" album=" " duration="4:34"/>
        <track name="Save Me" artist="Hollywood Undead" album="Day Of The Dead" duration="4:28"/>
        <track name="Levitate" artist="Hollywood Undead" album="American Tragedy" duration="1:24"/>
        <track name="Rap God" artist="Eminem" album="" duration="4:34"/>
        <track name="Wakedafucup" artist="Onyx" album="#WakeDaFucUp" duration="5:24"/>
    </genre>
</library>

Не работает широковещательная отправка и не могу понять как заставить клиентов ждать. Буду признателе за помощь. В гугле толковых примеров нет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.01.2016, 10:55
Ответы с готовыми решениями:

Клиент-сервер
Доброго времени суток всем. Обращаюсь с просьбой помочь с клиент-серверным приложением. Необходимо реализовать клиент-серверное...

Клиент-сервер
Сам я недавно начал изучать Java и не знаю весь его синтаксис. Но столкнулся с задачей сделать простой клиент-сервер, решающий простую...

Клиент сервер
Всем привет, возник такой вопрос, вот у меня есть сервер на java, такой простенький, и клиент (приложение на андройде), они обмениваются...

1
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
27.01.2016, 12:14
Цитата Сообщение от Paladin163 Посмотреть сообщение
В гугле толковых примеров нет.
ЛПП
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2016, 12:14
Помогаю со студенческими работами здесь

Клиент сервер
Здравствуйте, нужна помощь с программой Мне нужно: Клиент посылает два числа серверу и одну из математических операций: «*», «/», «+»,...

Клиент-сервер
Надо написать приложение клиент-сервер, один сервер, много клиентов. В какую сторону смотреть? Давайте пожалуйста ссылки, литературу.

Сервер-клиент
Имеется сервер и два клиента. Необходимо получить подтверждение от обоих клиентов. Код потока сервера: package server; import...

Клиент - Сервер
Всем привет! Тут такое дело, написал клиент и сервер, клиент должен передать объект серверу, а потом после обработки сервер должен в ответ...

Клиент - Сервер
Добрый вечер! Сижу, разбираюсь с TCP клиентом-сервером.. Задача такая: клиент посылает серверу любое число n, а сервер возвращает массив...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru