0% found this document useful (0 votes)
68 views

Aplicatie Client-Server

The document describes a client-server application that allows a client to search an item database managed by a server. The server reads item data from an XML file and can return matching items to client requests. The client has a graphical user interface to submit search terms to the server over a socket connection and receive results. The application includes classes for the client, server, thread handling requests, and parsing the XML database.

Uploaded by

Andrei Neacsu
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views

Aplicatie Client-Server

The document describes a client-server application that allows a client to search an item database managed by a server. The server reads item data from an XML file and can return matching items to client requests. The client has a graphical user interface to submit search terms to the server over a socket connection and receive results. The application includes classes for the client, server, thread handling requests, and parsing the XML database.

Uploaded by

Andrei Neacsu
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Aplicatie client-server

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {


public static void main (String args[]) {
Socket socket = null;
BufferedReader bufferedReader = null;
PrintWriter printWriter = null;

try {
socket = new Socket("localhost", 5000);
InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
printWriter = new PrintWriter(socket.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}

Window window = new Window(bufferedReader, printWriter);


window.setTitle("Project");
window.pack();
window.setLocationRelativeTo(null);
window.setVisible(true);
}
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.PrintWriter;

public class Window extends JFrame {

private BufferedReader bufferedReader;


private PrintWriter printWriter;

private JTextField jTextField;


private JButton jButton;

public Window(BufferedReader bufferedReader, PrintWriter printWriter) {


this.bufferedReader = bufferedReader;
this.printWriter = printWriter;

ActionButton actionButton = new ActionButton();

JLabel jLabel = new JLabel("Item:");


jTextField = new JTextField(50);
JPanel jPanelItem = new JPanel();
jPanelItem.add(jLabel);
jPanelItem.add(jTextField);

jButton = new JButton("Search");


jButton.addActionListener(actionButton);
JPanel jPanelButton = new JPanel();
jPanelButton.add(jButton);

JPanel jPanelGeneral = new JPanel();


jPanelGeneral.setLayout(new GridLayout(2 ,1));
jPanelGeneral.add(jPanelItem);
jPanelGeneral.add(jPanelButton);

Container container = this.getContentPane();


container.add(jPanelGeneral, "South");

setDefaultCloseOperation(EXIT_ON_CLOSE);
}

class ActionButton implements ActionListener {


@Override
public void actionPerformed(ActionEvent ev) {
Object object = ev.getSource();

if (object == jButton) {
try {
String output = jTextField.getText();
printWriter.print(output);
printWriter.flush();

String input = bufferedReader.readLine();

if (input.equals(""))
JOptionPane.showMessageDialog(null,
"Zero items with your searched name");
else
JOptionPane.showMessageDialog(null, input);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
import java.util.ArrayList;

public class Item {


public static ArrayList<Item> item;

private String name;


private int number;
private String description;

public void setName(String name) {


this.name = name;
}

public void setNumber(int number) {


this.number = number;
}

public void setDescription(String description) {


this.description = description;
}

public String getName() {


return name;
}

public int getNumber() {


return number;
}

public String getDescription() {


return description;
}
}
import java.net.ServerSocket;
import java.net.Socket;

public class Server {


public static void main(String args[]) {
System.out.println("Server is online!");

try {
ServerSocket serverSocket = new ServerSocket(5000);

for (;;) {
Socket socket = serverSocket.accept();

Thread thread = new Thread(new ServerThread(socket));


thread.start();

System.out.println("We have a connection!");


}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Iterator;

public class ServerThread implements Runnable {


private String input = "";
private String output = "";

private Socket socket;


private BufferedReader bufferedReader;
private PrintWriter printWriter;

public ServerThread(Socket socket) {


try {
this.socket = socket;
InputStreamReader inputStreamReader = new
InputStreamReader(this.socket.getInputStream());
this.bufferedReader = new BufferedReader(inputStreamReader);
this.printWriter = new PrintWriter(this.socket.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void run() {

try {
for (;;) {
input = bufferedReader.readLine();

XmlReader.read();

getOutputValue();

printWriter.print(output);
printWriter.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}

private void getOutputValue() {


output = "";

Iterator<Item> iterator = Item.item.iterator();


while (iterator.hasNext()) {
Item currentItem = iterator.next();

if (currentItem.getName().equals(input)) {
output += "There are " + currentItem.getNumber() + " pieces(s) of " + currentItem.getName() +
" with this description: " + currentItem.getDescription();
}
}
}
}

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

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;

public class XmlReader {


public static void read() {
File file = new File("Item.xml");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder;

try {
documentBuilder = documentBuilderFactory.newDocumentBuilder();

Document document = documentBuilder.parse(file);


document.getDocumentElement().normalize();

NodeList nodeList = document.getElementsByTagName("item");

Item.item = new ArrayList<>();

for (int i = 0; i < nodeList.getLength(); i++) {


Item.item.add(getItem(nodeList.item(i)));
}
} catch (SAXException | ParserConfigurationException | IOException e) {
e.printStackTrace();
}
}

private static Item getItem(Node node) {


Item item = new Item();

if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;

item.setName(getTagValue("name", element));
item.setNumber(Integer.parseInt(getTagValue("number", element)));
item.setDescription(getTagValue("description", element));
}

return item;
}

private static String getTagValue(String tag, Element element) {


NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = nodeList.item(0);
return node.getNodeValue();
}
}
UNIVERSITATEA PITESTI
FACULTATEA DE ELECTRONICA, COMUNICATII SI CALCULATOARE

Informatica industriala
-Proiect-

Student: Dragnea Ioana Alexandra


Specializarea : SECPI
Anul: I
Aplicatie client-server

Sa se realizeze o aplicatie client-server bazata pe socket-uri.

Serverul va accesa o baza de date (la alegere:fisier text, xml, access sau sql) si va transmite
catre client info cerute.
Baza de date va contine campurile nume produs, tip produs si numar bucati (ex:laptop,dell,45).
Clientul va avea o interfata grafica si va face cereri catre server. Cererea se face prin nume
produs, de ex:

Client:
laptop
Server:
dell
45

You might also like