Aplicatie Client Server Java
Aplicatie Client Server Java
Proiect
Aplicaie client-server
Profesor :
Ene Alexandru
Masterand :
Comnescu Gabriel
Mirel
2015-2016
Introducere
Aplicaii client - server
n aplicaiile client sunt implicate urmtoarele clase:
Socket
BufferedReader
PrintWriter
Portul PC
2015-2016
Tema proiectului
Imaginea unei piese este coninut de un fiier .txt sub forma unor
valori de zero (0) i unu (1).
Imaginea unei piese bune trebuie s conin numai valori de 1. O
valoare de 0 indic un punct defect. Se consider c o pies este bun dac
ea are un numr de puncte defecte mai mic dect un numr specificat.
S se realizeze o aplicaie client server care verific dac o pies
este bun sau nu. De asemenea, la cererea clientului se va afia piesa n
mod grafic.
Descriere aplicaie:
Aplicatia contine 3 clase:
-
clasa Server;
clasa FirClient;
clasa Client;
2015-2016
Clasa Server este cea care este rulata prima data. Dupa ce a fost
lansata in executie, serverul va incepe listingul pe un port, in cazul nostru,
pe portul 5000.
2015-2016
clientul va alege calea fisierului .txt care contine imaginea unei piese sub
forma unor valori de zero (0) i unu (1).
2015-2016
2015-2016
rezultatul poate fi unul negativ sau pozitiv (in cazul nostru, numarul
introdus anterior este mai mare decat nr de valori 1 din fisierul .txt).
urmatorul pas este interogarea clientului; va aparea o alta fereastra de
dialog in care clientul este intrebat daca doreste vizualizarea grafica a
piesei.
2015-2016
Alte exemple:
2015-2016
2015-2016
2015-2016
Codul aplicatiei:
Clasa Client
package proiect;
import java.awt.Color;
import java.awt.GridLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
*
* @author Gabi
*/
public class Client {
public static void main(String args[]) throws ClassNotFoundException {
Socket cs = null;
BufferedReader bfr = null;
PrintWriter pw = null;
try {
cs = new Socket("localhost", 5000);
InputStreamReader isr = new InputStreamReader(cs.getInputStream());
2015-2016
2015-2016
} finally {
try {
cs.close();
pw.close();
bfr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static String citesteCale() {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File f) {
return f.getName().toLowerCase().endsWith(".txt");
}
@Override
public String getDescription() {
return "txt files";
}
});
int r = chooser.showDialog(new JFrame(), "Alegeti fisierul!");
String cale = "Eroare";
if (r == JFileChooser.APPROVE_OPTION) {
cale = chooser.getSelectedFile().getAbsolutePath();
}
return cale;
}
2015-2016
Clasa Server
package proiect;
import java.io.IOException;
2015-2016
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(5000);
System.out.println("SERVERUL A PORNIT LISTINGUL PENTRU PORTUL 5000");
for (;;) {
Socket cs = ss.accept();
FirClient f = new FirClient(cs);
f.start();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ss.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Clasa FirClient
package proiect;
import java.io.*;
import java.net.Socket;
2015-2016
import java.util.Scanner;
public class FirClient extends Thread {
private Socket cs;
private BufferedReader bfr;
private PrintWriter pw;
ObjectOutputStream out;
public FirClient(Socket cs) {
try {
this.cs = cs;
InputStreamReader isr = new InputStreamReader(cs.getInputStream());
bfr = new BufferedReader(isr);
pw = new PrintWriter(cs.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
String cale;
try {
for (;;) {
cale = bfr.readLine();
int a[][] = citesteMatrice(cale);
double procent = calculeazaProcent(a);
pw.println(procent);
pw.flush();
out = new ObjectOutputStream(cs.getOutputStream());
out.writeObject(a);
}
} catch (IOException e) {
e.printStackTrace();
2015-2016
} finally {
try {
cs.close();
bfr.close();
pw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static int[][] citesteMatrice(String cale) throws FileNotFoundException {
Scanner input = new Scanner(new File(cale));
int rows = 0;
int columns = 0;
while (input.hasNextLine()) {
rows++;
Scanner colReader = new Scanner(input.nextLine());
columns = 0;
while (colReader.hasNextInt()) {
colReader.nextInt();
columns++;
}
}
int a[][] = new int[rows][columns];
input = new Scanner(new File(cale));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (input.hasNextInt()) {
a[i][j] = input.nextInt();
}
2015-2016
}
}
return a;
}
public static double calculeazaProcent(int a[][]) {
int contor = 0;
double procent;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[0].length; j++) {
if (a[i][j] == 1) {
contor++;
}
}
}
int nrTotalElemente = a.length * a[0].length;
procent = (double) contor / nrTotalElemente;
return procent;
}
}
2015-2016