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

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

27.01.2016, 10:55. Показов 986. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru