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

Sender Broker Reciever Асинхронность

20.09.2015, 11:55. Показов 463. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, получил задание по лабораторной работе. Создать своего рода клиент серверное приложение используя Брокера. Смысл в том,что бы отправитель читал данные их XML файла (асинхронно), отправлял их Брокеру(тоже асинхронно) ,а Брокер в свою очередь отправлял полученные данные Получателю. Требования к заданию такие что, должна быть реализована модульность,то есть отдельный класс для работы с XML файлами,отдельный класс для работы по пересылке и чтению данных. Асинхронность можно реализовать реализовать по средству потоков.

Приложу,то что я сделал.

Проект Sender. Класс XMLWorking.java
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sender_3;
 
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
/**
 *
 * @author Iachimov Alex
 */
public class XMLWorking  {
   
    public String path;
    
    public XMLWorking(){
        
    }
    
    public XMLWorking(String p){
        this.path = p;
    }
    public String getPath(){
        return this.path;
    }
    
    public void createXML() throws ParserConfigurationException, TransformerConfigurationException, TransformerException{
        DocumentBuilderFactory  documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
 
        Document document = documentBuilder.newDocument();
        Element element1 = document.createElement("LabWork_1");
        document.appendChild(element1);
        
        Attr attr1 = document.createAttribute("ID");
        attr1.setValue("1");
        element1.setAttributeNode(attr1);
        
        Element a = document.createElement("a");
        Element b = document.createElement("b");
        a.appendChild(document.createTextNode("1"));
        b.appendChild(document.createTextNode("2"));
        element1.appendChild(a);
        element1.appendChild(b);
        
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(document);
 
        
        StreamResult streamResult = new StreamResult(new File(path));  //Ex = "C:\\XML\\data.xml"
        transformer.transform(source, streamResult); 
    }
    
    public String readXML() throws SAXException, IOException, ParserConfigurationException{
        String text = null;
        File xmlFile = new File(path);
        DocumentBuilderFactory  documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(xmlFile);
        
        NodeList list = document.getElementsByTagName("LabWork_1");
        
        for(int i=0;i<=list.getLength();i++){
            Node node = list.item(i);
            if(node.getNodeType()== Node.ELEMENT_NODE){
                Element element = (Element) node;
                text = element.getTagName() +" " + element.getAttribute("ID") + " " + element.getElementsByTagName("a").item(0).getTextContent() + " " + element.getElementsByTagName("b").item(0).getTextContent();
                return text;
            }
        } 
        return text;
    }
    
    public void writeXML(String name,String text) throws ParserConfigurationException, TransformerConfigurationException, TransformerException{
        String[] parts = text.split(" ");
        
        DocumentBuilderFactory  documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
 
        Document document = documentBuilder.newDocument();
        
        Element element1 = document.createElement(parts[0]);
        document.appendChild(element1);
        
        Attr attr1 = document.createAttribute("ID");
        attr1.setValue(parts[1]);
        element1.setAttributeNode(attr1);
        
        Element a = document.createElement("a");
        Element b = document.createElement("b");
        a.appendChild(document.createTextNode(parts[2]));
        b.appendChild(document.createTextNode(parts[3]));
        element1.appendChild(a);
        element1.appendChild(b);
        
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(document);
 
        
        StreamResult streamResult = new StreamResult(new File(name));  //Ex = "C:\\XML\\data.xml"
        transformer.transform(source, streamResult); 
        
        
    }
    
}
Проект Sender. Класс Netwoking.java
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sender_3;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
 
/**
 *
 * @author Iachimov Alex
 */
public class Networking implements Runnable{
    XMLWorking x = null;
    BufferedReader in= null;
    PrintWriter  out= null;
    
    
     ServerSocket serverSocket = null;
     Socket  socket = null;
     Integer port = null;
     String msg = null;
     String adress = null;
    
    public Networking(String adress,Integer port ){
        this.port = port;
        this.adress = adress;
    }
    
    
    public Networking(Socket socket){
        this.socket= socket;
    }
    
    public Networking(Integer p){
        this.port= p;
    }
    
    public void sendMessage (String s) throws IOException{
        socket = new Socket(InetAddress.getByName(adress), port);
        out=new PrintWriter(socket.getOutputStream(), true); 
        in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out.println(s);
        out.close();
        in.close();
        socket.close();
    }
    
    public String readMessage(){
        try {
            serverSocket = new ServerSocket(port,10);
            
        } catch (IOException ex) {
            Logger.getLogger(Networking.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Невозможно подключиться к порту.");
            System.exit(-1);
        }
        
        while(true){
            try{
                System.out.print("Ожидание ...");
                socket= serverSocket.accept();
                Runnable runnable = new Networking(socket);
                Thread thread = new Thread(runnable);
                thread.start();
                System.out.println("Присоеденился");
                
                
            } catch(IOException e) {
                System.out.println("Невозможно присоедениться");
                System.exit(-1);
                
            }
            
        }
        
    }
 
    @Override
    public void run() {
            x = new XMLWorking();
            try{
            in= new BufferedReader(new
            InputStreamReader(socket.getInputStream()));
            out= new PrintWriter(socket.getOutputStream(),true);
            String input;  
            while((input = in.readLine()) != null) {
                System.out.println(input);
                try {
                    x.writeXML("C:\\XML\\data2.xml", input);
                } catch (ParserConfigurationException ex) {
                    Logger.getLogger(Networking.class.getName()).log(Level.SEVERE, null, ex);
                } catch (TransformerException ex) {
                    Logger.getLogger(Networking.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            }
            /*
            out.close();
            in.close();
            fromSender.close();
            brokerSocket.close();
            */
        } catch(IOException e) {
        // TODOAuto-generated catch block
            System.out.println("You got an IOException"+e.getMessage());
            e.printStackTrace();
        }
    }
}
Проект Sender. Класс Main.java
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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sender_3;
 
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
/**
 * Sender
 * @author Iachimov Alex
 */
public class Main {
    public static void main(String[]args) throws ParserConfigurationException, TransformerException, SAXException, IOException{
        //Создание XML файла.
        XMLWorking f = new XMLWorking("C:\\XML\\data.xml");
        Networking n = new Networking("127.0.0.1", 8888);
        //f.createXML();
        String info = f.readXML();
        System.out.println(info);
        //f.writeXML("C:\\XML\\data2.xml",info);
        n.sendMessage(info);
        
    }
}
Далее что бы использовать классы Netwoking и XMLWoking я создал .jar файл и импортировал его в два оставшихся проекта.
Проект Broker. Класс Main.java
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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package broker_3;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import sender_3.Networking;
import sender_3.XMLWorking;
 
/**
 * Broker
 * @author Iachimov Alex
 */
public class Main {
    static Networking n = new Networking(8888);
    static Networking n2 = new Networking("127.0.0.1",9999);
    
    
    public static void main(String[]args) throws ParserConfigurationException, TransformerException, IOException{
        n.readMessage();
        System.out.println("-----------");
        n2.sendMessage("Hello World");
        
    }
}
Проект Reciever. Класс Main.java
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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 * Reciever
 * @author Iachimov Alex
 */
 
 
package reciever_3;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import sender_3.XMLWorking;
import sender_3.Networking;
 
public class Main {
    static Networking n = new Networking(9999);
    static XMLWorking f = new XMLWorking();
    
    public static void main(String[]args) throws ParserConfigurationException, TransformerException, IOException{
        n.readMessage();        
        f.writeXML("C:\\XML\\data2.xml", n.readMessage());
        
    }
}
Загвоздка в том,что то отправитель отсылает сообщение брокеру,тот его видит,причём если запустить 100 отправителей ,сё будет нормально работать т.к для каждого запуститься свой поток, но вот от Брокера к получателю у меня не получается отправить сообщение так как я отправлял от отправителя к брокеру. Подскажите пожалуйста как это реализовать. Если у кого то есть небольшой пример реализации через брокера,буду очень признателен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2015, 11:55
Ответы с готовыми решениями:

IR Reciever
Возникла необходимость научить CD проигрыватель одной фирмы понимать команды пульта другой фирмы. Может кому из начинающих пригодятся...

broadcast reciever
здравствуйте,возникла интересная ситуация. имею фрагмент, в котором в onresume() регистрируется broadcastreciever, а в onstop() регистрация...

FileMapping - Написать Reciever
Доброго времени суток. Есть две программки Sender и Reciever Sender: MemoryMappedFile mmf; private void...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2015, 11:55
Помогаю со студенческими работами здесь

Преобразование простого bluetooth reciever'a
Всем привет, на руках имеется простой bluetooth reciever c разъемом USB и дисковая магнитолла Alpine, примерно 2005-го года, со штатным...

Service Broker
Здравствуйте. Хочу разобраться в сервис-брокере, но никак не могу найти хороших примеров. Везде только описано какой он хороший и показаны...

Документация по Service Broker
Здравствуйте! Хочу научиться работать с &quot;Service Broker&quot;, однако ни где не могу найти нормальную документацию по нему на русском...

Младший разработчик WebSphere Message Broker
WebSphere Message Broker занимает лидирующее положение на рынке продуктов для построения интеграционных шин – автобанов 21 века, которые...

Младший разработчик WebSphere Message Broker
Ведущая российская компания-разработчик программного обеспечения в области интеграции банковских приложений приглашает на работу...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru