Phorum.ro
Your Avatar Welcome to Phorum.ro!
If you haven't registered yet, click here!
Attention Visitor:
You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Du-te înapoi   Phorum.ro > Web Design & Web Development > Programare > Java > Java Q&A

Java Q&A Intrebari si raspunsuri legate de lucrul cu Java.

Răspunde
 
Thread Tools Moduri de afișare
Vechi 20.01.2008   #1
geo2006
16-Bit Member
 
Data înregistrării: 16.07.2006
Mesaje: 10
Rep Power: 6
geo2006 is on a distinguished road
Question Chat N-la-N ! Help !

Vreau sa fac un Chat, si am cate o eroare la fiecare clasa.


Clasa DialogUtilizator

Cod:
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogUtilizator extends JFrame {
private JTextField inTextGrafic; // Intrare - linie de text grafica (JtextField)
private JTextArea outTextGrafic; // Iesire - zona de text grafica (JtextArea)
private JScrollBar vertical;
private ConexiuneRetea conexiune;
private String sirCitit;
// Initializari grafice
public DialogUtilizator(String nume) { // constructor
super(nume); // Stabilire titlu fereastra (JFrame)
Container containerCurent = this.getContentPane();
containerCurent.setLayout(new BorderLayout());
// Zona de text non-editabila de iesire (cu posibilitati de defilare)
outTextGrafic = new JTextArea(5, 40);
JScrollPane scrollPane = new JScrollPane(outTextGrafic,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
vertical = scrollPane.getVerticalScrollBar();
containerCurent.add("Center", scrollPane);
outTextGrafic.setEditable(false);
// Camp de text editabil de intrare
inTextGrafic = new JTextField(40);
containerCurent.add("South", inTextGrafic);
// Inregistrarea "ascultatorului" de "evenimente actionare" la
// "obiectul sursa" intrare de text
inTextGrafic.addActionListener(new AscultatorInText());
// Iesire din program la inchiderea ferestrei
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack(); // Impachetarea (compactarea) componentelor in container
setVisible(true); // Fereastra devine vizibila
inTextGrafic.requestFocus(); // Cerere focus pe intrarea de text }
public String nextLine() {
String linie = inTextGrafic.getText(); // Citirea unei linii text
inTextGrafic.setText(""); // Golirea intrarii text
return linie;
}
public int nextInt() {
String linie = inTextGrafic.getText(); // Citirea unei linii text
inTextGrafic.setText(""); // Golirea intrarii text
return Integer.parseInt(linie);
}
public void printLine(String text) {
outTextGrafic.append(text + "\n");
vertical.setValue(vertical.getMaximum() - vertical.getVisibleAmount());
validate(); repaint();
}
public void setConexiune(ConexiuneRetea conexiune) {
this.conexiune = conexiune;
}
// Clasa interna "ascultator" de "evenimente actionare"
// implementeaza interfata ActionListener
class AscultatorInText implements ActionListener {
// Tratarea actionarii intrarii de text (introducerii unui "Enter")
public void actionPerformed(ActionEvent ev) {
sirCitit = nextLine();
conexiune.printLine(sirCitit);
if (sirCitit.equals(new String("BYE"))) System.exit(0); //Conditie oprire
}
}
}

Clasa ConexiuneRetea

Cod:
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class ConexiuneRetea {
private Socket conexiune;
private Scanner scannerTCP;
private PrintStream printerTCP;
public ConexiuneRetea(Socket conexiune) throws IOException{
this.conexiune = conexiune;
this.scannerTCP = new Scanner(conexiune.getInputStream());
this.printerTCP = new PrintStream(conexiune.getOutputStream());
}
public String nextLine() {
return this.scannerTCP.nextLine();
}
public int nextInt() {
return this.scannerTCP.nextInt();
}
public void printLine(String text) {
this.printerTCP.println(text);
this.printerTCP.flush();
}
public String getLocalAddress() {
return socket.getLocalAddress().getHostAddress();
}
public String getRemoteAddress() {
return socket.getInetAddress().getHostAddress();
}
}
}

Clasa ServerChatN2N

Cod:
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
public class ServerChatN2N extends Thread {
private static int numarClienti = 0;
private static DialogUtilizator04 dialog;
private static int portTCP;
private static ServerSocket serverTCP;
private static Socket socketTCP;
public static final int NUMAR_MAXIM_CLIENTI = 10;
private static ConexiuneRetea03[] conexiuni;
private int numarulConexiuniiCurente; // incepe cu 0
public ServerChatN2N(int numarulConexiuniiCurente) throws IOException {
this.numarulConexiuniiCurente = numarulConexiuniiCurente;
}
public static void main (String args[]) throws IOException {
dialog = new DialogUtilizator04("SERVER CHAT N2N");
conexiuni = new ConexiuneRetea03[NUMAR_MAXIM_CLIENTI];
portTCP = Integer.parseInt(JOptionPane.showInputDialog(
"Introduceti numarul de port al serverului"));
serverTCP = new ServerSocket(portTCP); // Creare socket server
while (true) {
socketTCP = serverTCP.accept(); // Creare socket
conexiuni[numarClienti] = new
ConexiuneRetea03(socketTCP);
ServerChatN2N server = new ServerChatN2N(numarClienti++);
server.start();
}
}
public void removeConnexion(int crt) {
for (int i=crt; i<numarClienti-1; i++) {
conexiuni[i] = conexiuni[i+1];
}
numarClienti--;
}
public void run() { // Fir executie receptie prin socket
String mesaj;
while(true) {
mesaj = this.conexiuni[numarulConexiuniiCurente].nextLine();
// this.dialog.printLine(mesaj);
for (int i=0; i<numarClienti; i++) {
conexiuni[i].printLine(mesaj);
}
// Testarea conditiei de oprire
if (mesaj.equals("BYE")) {
removeConnexion(numarulConexiuniiCurente);
this.dialog.printLine("Bye!");
this.stop();
}
}
}
}

Clasa ClientChatN2N

Cod:
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
public class ClientChatN2N extends Thread {
private DialogUtilizator04 dialog;
private ConexiuneRetea03 conexiune;
private Socket socketTCP;
private int portTCP;
private InetAddress adresaIP;
public ClientChatN2N() throws IOException {
dialog = new DialogUtilizator04("CLIENT CHAT N2N");
portTCP = Integer.parseInt(JOptionPane.showInputDialog(
"Introduceti numarul de port al serverului"));
adresaIP = InetAddress.getByName(JOptionPane.showInputDialog(
"Introduceti adresa IP a serverului"));
socketTCP = new Socket(adresaIP, portTCP); // Creare socket
conexiune = new ConexiuneRetea03(socketTCP);
dialog.printLine("\nPentru oprire introduceti \"BYE\" si <Enter>\n");
}
public static void main (String args[]) throws IOException {
ClientChatN2N client = new ClientChatN2N();
client.start();
String mesaj;
while(true) {
mesaj = client.dialog.nextLine("Introduceti mesajul");
client.conexiune.printLine(mesaj);
if (mesaj.equals("BYE")) break; // Testarea conditiei de oprire
}
try {
client.socketTCP.close(); // Inchidere socket (implicit fluxuri)
} catch (IOException ioe) {};
client.dialog.printLine("Bye!");
System.exit(0);
}
public void run() { // Fir executie receptie prin socket
String mesaj;
while(true) {
mesaj = this.conexiune.nextLine();
this.dialog.printLine(conexiune.getLocalAddress() + mesaj);
if (mesaj.equals("BYE")) break; // Testarea conditiei de oprire
}
try {
this.socketTCP.close(); // Inchidere socket (implicit fluxuri)
} catch (IOException ioe) {};
this.dialog.printLine("Bye!");
System.exit(0);
}
}

Multumesc.
geo2006 is offline   Reply With Quote
Sponsored Links
Vechi 21.01.2008   #2
geo2006
16-Bit Member
 
Data înregistrării: 16.07.2006
Mesaje: 10
Rep Power: 6
geo2006 is on a distinguished road
Implicit

Am rezolvat pana la urma problema cu erorile.

Stie cineva cum sa pun sa-mi apara un NICK pt fiecare utilizator ?
geo2006 is offline   Reply With Quote
Răspunde


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Moduri de afișare

Reguli de postare
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Pornit
emoticoanele sunt Pornit
Codul [IMG] este Pornit
Codul HTML este Oprit



Ora este GMT +3. Ora este acum 12:41:50.


Rulează cu: vBulletin Version 3.8.4
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Forum SEO by Zoints

XXXXXXXXXXXXXXXXXXX
Inactive Reminders By Icora Web Design