Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
casa verde 2024

Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata
 Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...
 teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN
 Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.
 

Schimbare introducere consola cu interfata grafica.

- - - - -
  • Please log in to reply
5 replies to this topic

#1
Ludovico

Ludovico

    New Member

  • Grup: Junior Members
  • Posts: 2
  • Înscris: 16.05.2017
Salut. Am facut un program in java ce trimite fisiere ( de tip txt ) de la un server la un client si de la client la server. Comenzile sunt pe baza de tastatura iar mie imi trebuie interfata grafica. Sunt incepator, deci sfaturile sau link-urile nu ma ajuta. Se poate mura in gura va rog?


Server-ul
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
	private static ServerSocket serverSocket;
	private static Socket clientSocket = null;
	public static void main(String[] args) throws IOException {
		try {
			serverSocket = new ServerSocket(5555);
			System.out.println("Server started.");
		} catch (Exception e) {
			System.err.println("Port in use.");
			System.exit(1);
		}
		while (true) {
			try {
				clientSocket = serverSocket.accept();
				System.out.println("Conection Accept : " + clientSocket);
				Thread t = new Thread(new ClientConnection(clientSocket));
				t.start();
			} catch (Exception e) {
				System.err.println("Conection Error.");
			}
		}
	}
}


Conectarea clientului.
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ClientConnection implements Runnable {
	private Socket clientSocket;
	private BufferedReader in = null;
	public ClientConnection(Socket client) {
		this.clientSocket = client;
	}
	@Override
	public void run() {
		boolean done = false;
		try{
			in = new BufferedReader(new InputStreamReader(
					clientSocket.getInputStream()));
		}
		catch(Exception e){}
		String clientSelection;
		while (!done) {
			try {

				clientSelection = "";
				while ((clientSelection = in.readLine()) != null) {
					switch (clientSelection) {
					case "send":
						receiveFile();
						break;
					case "get":
						String outGoingFileName;
						while ((outGoingFileName = in.readLine()) != null) {
							sendFile(outGoingFileName);
						}
						break;
					default:
						System.out.println("Wrong Command...");
						break;
					}
				}
			} catch (IOException ex) {
				System.err.println("Erro--" + ex);
			}
		}
	}
	public void receiveFile() {
		try {
			int bytesRead;
			DataInputStream clientData = new DataInputStream(
					clientSocket.getInputStream());
			String fileName = clientData.readUTF();
			OutputStream output = new FileOutputStream(
					("received_from_client_" + fileName));
			long size = clientData.readLong();
			byte[] buffer = new byte[1024];
			while (size > 0
					&& (bytesRead = clientData.read(buffer, 0,
							(int) Math.min(buffer.length, size))) != -1) {
				output.write(buffer, 0, bytesRead);
				size -= bytesRead;
			}
			output.flush();
			output.close();
			System.out.println("File " + fileName + " received from client.");
		} catch (IOException ex) {
			System.err.println("Error." + ex);
		}
	}
	public void sendFile(String fileName) {
		try {
			File myFile = new File(fileName);
			byte[] mybytearray = new byte[(int) myFile.length()];
			FileInputStream fis = new FileInputStream(myFile);
			BufferedInputStream bis = new BufferedInputStream(fis);
			DataInputStream dis = new DataInputStream(bis);
			dis.readFully(mybytearray, 0, mybytearray.length);
			OutputStream os = clientSocket.getOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			dos.writeUTF(myFile.getName());
			dos.writeLong(mybytearray.length);
			dos.write(mybytearray, 0, mybytearray.length);
			dos.flush();
			System.out.println("File " + fileName + " send to client.");
		} catch (Exception e) {
			System.err.println("Error! " + e);
		}
	}
}


Client
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Client {
	private static Socket sock;
	private static String fileName;
	private static String newName;
	private static BufferedReader bufferReader;
	private static PrintStream os;

	public static void main(String[] args) throws IOException {
		try {
			sock = new Socket("192.168.100.210", 5555);
			bufferReader = new BufferedReader(new InputStreamReader(System.in));
		} catch (Exception e) {
			System.err.println("Error - Try again.");
			System.exit(1);
		}
		os = new PrintStream(sock.getOutputStream());
		boolean done = false;
		while (!done) {
			try {
				switch (selectAction()) {
				case "send":
					os.println("send");
					sendFile();
					break;
				case "get":
					os.println("get");
					System.err.print("File Name: ");
					fileName = bufferReader.readLine();
					os.println(fileName);
					receiveFile(fileName);
					break;
				case "exit":
					done = true;
					os.println("exit");
					System.out.println("Connection closed");
					break;
				}
			} catch (Exception e) {
				System.err.println("Wrong command");
			}
		}
		sock.close();
	}
	public static String selectAction() throws IOException {
		System.out.println("");
		System.out.println("send - Send File.");
		System.out.println("get - Get File.");
		System.out.println("exit - Exit.");
		System.out.print("\nSelect one Option: ");
		return bufferReader.readLine();
	}
	public static void sendFile() {
		try {
			System.err.print("File Name: ");
			fileName = bufferReader.readLine();
			File myFile = new File(fileName);
			byte[] mybytearray = new byte[(int) myFile.length()];
			FileInputStream fis = new FileInputStream(myFile);
			BufferedInputStream bis = new BufferedInputStream(fis);
			DataInputStream dis = new DataInputStream(bis);
			dis.readFully(mybytearray, 0, mybytearray.length);
			OutputStream os = sock.getOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			dos.writeUTF(myFile.getName());
			dos.writeLong(mybytearray.length);
			dos.write(mybytearray, 0, mybytearray.length);
			dos.flush();

			System.out.println("File " + fileName
					+ " send to server.");
		} catch (Exception e) {
			System.err.println("ERROR! " + e);
		}
	}
	public static void receiveFile(String fileName) {
		try {
			int bytesRead;
			InputStream in = sock.getInputStream();
			DataInputStream clientData = new DataInputStream(in);
			fileName = clientData.readUTF();
			OutputStream output = new FileOutputStream(
					("received_from_server_" + fileName));
			long size = clientData.readLong();
			byte[] buffer = new byte[1024];
			while (size > 0
					&& (bytesRead = clientData.read(buffer, 0,
							(int) Math.min(buffer.length, size))) != -1) {
				output.write(buffer, 0, bytesRead);
				size -= bytesRead;
			}
			output.flush();
			System.out
					.println("File " + fileName + " received from Server.");
		} catch (IOException ex) {
			Logger.getLogger(ClientConnection.class.getName()).log(Level.SEVERE,
					null, ex);
		}
	}
}


Ip-ul este al meu, nu am incercat cu localhost. Se face conversia fisierul in biti si la primire din biti inapoi in fisier. Am nevoie de o interfata pentru comenzile send, get, exit. Ma poate ajuta cineva? Va rog.

#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai daca tu ai scris acel cod de ce nu vrei sa citesti si despre cum se face o interfata? Doar poti.

#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostLudovico, on 16 mai 2017 - 13:55, said:

Se poate mura in gura va rog?
Mura în gură te-ar ajuta momentan, însă nu pe termen lung în cariera ta.

De ce nu plusezi, cu o atitudine profesionistă?

#4
IonutYo

IonutYo

    Member

  • Grup: Members
  • Posts: 285
  • Înscris: 30.07.2013
@Ludovico, de unde ai luat codul ala? Seamana cu o anumita tema de la o anumita facultate.

Edited by IonutYo, 16 May 2017 - 18:53.


#5
Ludovico

Ludovico

    New Member

  • Grup: Junior Members
  • Posts: 2
  • Înscris: 16.05.2017

View Postneagu_laurentiu, on 16 mai 2017 - 15:43, said:

Pai daca tu ai scris acel cod de ce nu vrei sa citesti si despre cum se face o interfata? Doar poti.
Stiu sa fac o interfata dar nu stiu cum sa imi adaptez contul pentru asa ceva. Imi trebuie ceva simplu.

View PostOriginalCopy, on 16 mai 2017 - 16:50, said:

Mura în gură te-ar ajuta momentan, însă nu pe termen lung în cariera ta.

De ce nu plusezi, cu o atitudine profesionistă?
Momentan am nevoie pentru prezentarea proiectului. Pe termen lung voi putea invata mai bine din exemplul oferit ,,mura in gura,,. Tema proiectului meu este legatura intre doua calculatoare. Puteam face un chat, transmitrerea de fisiere, transmiterea de mesaje. Ma gandisem la un joc multiplayer dar era prea usor, conform profesorului.

#6
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View PostLudovico, on 18 mai 2017 - 11:06, said:

Stiu sa fac o interfata dar nu stiu cum sa imi adaptez contul pentru asa ceva. Imi trebuie ceva simplu.
Fie folosesti  mecanismul D.I.P(Dependency Inversion Principle) http://tidyjava.com/...ersion-in-java/
sau folosesti FrontController Design Pattern(atentie la Dispatcher ca acolo e toata smecheria):
https://www.tutorial...ler_pattern.htm
In cazul tau, inlocuitesti StudenView cu  "Your-console-stuff" si HomeView cu "Your-GUI-Stuff"
De asemeni va trebui sa adaptezi FrontControlleru Design Patternul  pentru proiectul tau.Evident
ca implementarea FrontControllerului in cazul tau nu o sa fie EXACT cum este dat in exemplu.

Dispatcher - Front Controller may use a dispatcher object which can dispatch the request(in cazul tau acest request va fi "comanda" de schimbare intre interfata grafica si console)   to corresponding specific handler. (in cazul tau specific handler reprezinta implementarea pt consola fie implementarea pt interfata grafica)

Atentie insa, pentru GUI va trebui sa inveti ffie  Swing (de obicei asta este  varianta Default, http://docs.oracle.c...torial/uiswing/ ) sau javaFX
https://docs.oracle....echnologies.htm

In ambele cazuri, codul tau de pe GUI nu va scapa de crearea unor event-listenere pt ce actiuni vrei tu . Posted Image
Tinand cont de ce vrei tu VS cunostiintele tale de acum, vei zabovi destul pe aceasta tema de casa Posted Image
Mult succes.

PS: nu inteleg pe profesorul vostru . Cum de ti-a data tie un astfel de proiect care se bazeaza foarte mult pe design pattern  si OODA(object oriented Design Analysi) in conditiile in care tu ai probleme fundamentalale in intelegerea rolului unui interfete/clase abstracte.
Ce sa mai vorbim despre Swing (care automat te trece pe java multithreading,: new Runnable() {  public void button() { actiuneButonApasat();}});) ca Swing numai asa are.
Apoi am observat in codul niste fielduri statice.Ai idee ca face o variabila statica in contextul multithreading ?
Deci fie renunti la acele variabile statice fie pui mana si invet java multithreading si atunci cand pui o variabila statica tinand cont de contexul multithreading atunci stii foarte bine de ce ai pus-o Posted Image

Ca sa-ti faci viata mai usoara:
FrontController DP prezentare:
[ https://www.youtube-nocookie.com/embed/mzcso6ZKoqY?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]
FrontController implementare:
[ https://www.youtube-nocookie.com/embed/NWNNsbMsrq4?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]
Swing:
[ https://www.youtube-nocookie.com/embed/I41_sdkuzOY?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]
JavaFX:
[ https://www.youtube-nocookie.com/embed/9YrmON6nlEw?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

PS: front-controller nu este singurul design pattern prin care poti sa implementezi.Mai sunt si altele.Dar asa e cel mai simplu pentru tine :D

Edited by lightpoint, 22 May 2017 - 09:19.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate