0% found this document useful (0 votes)
34 views5 pages

Codigo Del Proyecto Chat

1. The document describes a Java chat application with client and server classes that communicate over sockets. 2. The client and server classes each run the application and start their respective interfaces. 3. A thread class handles socket communication on the server, receiving messages from clients as objects and updating the server interface. 4. The data class serializes message data to transfer between client and server sockets. 5. The client and server interface classes each display a log of messages and provide controls for input/sending on the client.

Uploaded by

henry
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views5 pages

Codigo Del Proyecto Chat

1. The document describes a Java chat application with client and server classes that communicate over sockets. 2. The client and server classes each run the application and start their respective interfaces. 3. A thread class handles socket communication on the server, receiving messages from clients as objects and updating the server interface. 4. The data class serializes message data to transfer between client and server sockets. 5. The client and server interface classes each display a log of messages and provide controls for input/sending on the client.

Uploaded by

henry
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Henry Pérez García CHAT

8vo – Ingeniería en Sistemas


Aplicaciones Distribuidas

Clase Cliente
public class Client {

public static void main(String[] args) {


ClientInterface client = new ClientInterface("Chat - Sockets
Java");
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Clase Servidor
public class Server {

public static void main(String[] args) {


ServerInterface interfaceServer =
new ServerInterface("Chat - SocketServer Java");
interfaceServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Clase Hilo
public class Hilo extends Thread
{
private ServerInterface serverInterface;

public Hilo(String name, ServerInterface serverInterfaz){


super(name);
this.serverInterface = serverInterfaz;
start();
}

@Override
public void run() {
ServerSocket serverSocket;
Socket server;
try {
serverSocket = new ServerSocket(9999);

Dato receivedMessage;
while (true)
{
try{
server = serverSocket.accept();
ObjectInputStream objectInputStream = new
ObjectInputStream(server.getInputStream());
try {
receivedMessage = (Dato)
objectInputStream.readObject();
serverInterface.getMenssages().append("\nIp "
+ receivedMessage.getIp()+ " de "
+ receivedMessage.getNombre()+ ": " +
receivedMessage.getMensaje());

Socket enviar_regreso=new
Socket(receivedMessage.getIp(),9090);
Henry Pérez García CHAT
8vo – Ingeniería en Sistemas
Aplicaciones Distribuidas
ObjectOutputStream output_envia= new
ObjectOutputStream(enviar_regreso.getOutputStream());
output_envia.writeObject(receivedMessage);
output_envia.close();
enviar_regreso.close();
} catch (ClassNotFoundException ex) {

Logger.getLogger(Hilo.class.getName()).log(Level.SEVERE, null, ex);


}

server.close();
}
catch (IOException ex){
System.out.println (ex.getMessage());
}
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}

Clase Dato
public class Dato implements Serializable{
private String nombre, ip, mensaje;

public Dato(String nick, String ip, String texto) {


this.nombre = nick;
this.ip = ip;
this.mensaje = texto;
}

public Dato() {
}

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}

public String getIp() {


return ip;
}

public void setIp(String ip) {


this.ip = ip;
}

public String getMensaje() {


return mensaje;
}

public void setMensaje(String mensaje) {


this.mensaje = mensaje;
}
}
Henry Pérez García CHAT
8vo – Ingeniería en Sistemas
Aplicaciones Distribuidas
Clase Interfaz de Cliente
public class ClientInterface extends JFrame implements Runnable{
private final JLabel lblTitle, lblClient, lblIp, lblMessage,
lblMessages;
private final JTextField txtMessage, txtClient, txtIp;
private final JTextArea txtMessages;
private final JButton btnSubmit, btnLimpiar;
private final JPanel panel;

private Socket socketClient;

public ClientInterface(String title){


lblTitle = new JLabel("Chat (Cliente)");
lblClient = new JLabel("Nick: ");
lblIp = new JLabel("Ip chat: ");
lblMessage = new JLabel ("Mensaje: ");
lblMessages = new JLabel ("-Chat:-");

txtMessage = new JTextField (25);


txtMessages = new JTextArea (10, 25);
txtClient = new JTextField (25);
txtIp = new JTextField (25);

btnSubmit = new JButton("Enviar");


btnLimpiar = new JButton("Limpiar");

btnSubmit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
socketClient = new Socket("192.168.42.8", 9999);
try (ObjectOutputStream objectOutputStream = new
ObjectOutputStream(socketClient.getOutputStream())) {
Dato dato = new Dato(txtClient.getText(),
txtIp.getText(),
txtMessage.getText());
txtMessages.append("\n Yo:" +
txtMessage.getText());
objectOutputStream.writeObject(dato);
}
socketClient.close();
} catch (IOException ex) {
txtMessages.setText(txtMessages.getText() + "\n" +
txtMessage.getText() + " - Message not sent.");
System.out.println(ex.getMessage());
}
}
});

panel = new JPanel();


panel.add(lblTitle);
panel.add(lblIp); panel.add(txtIp);
panel.add(lblClient); panel.add(txtClient);
panel.add(lblMessages); panel.add(txtMessages);
panel.add(lblMessage); panel.add(txtMessage);
panel.add(btnSubmit); panel.add(btnLimpiar);
Henry Pérez García CHAT
8vo – Ingeniería en Sistemas
Aplicaciones Distribuidas
this.setBounds(800, 350, 320, 410);
this.add(panel);
this.setVisible(true);
this.setTitle(title);

Thread hilo=new Thread(this);


hilo.start();
}

@Override
public void run() {
ServerSocket serverSocket;
Socket cliente;
try {
serverSocket = new ServerSocket(9090);
//System.out.println("Ya creó el ServerSocket");
Dato datos;
while (true)
{
try{
cliente = serverSocket.accept();
ObjectInputStream objectInputStream = new
ObjectInputStream(cliente.getInputStream());
try {
datos = (Dato) objectInputStream.readObject();
txtMessages.append("\n" + datos.getNombre()+":
"+ datos.getMensaje());

} catch (ClassNotFoundException ex) {


ex.getMessage();
}
}
catch (IOException ex){
System.out.println (ex.getMessage());
}
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}

}
}

Clase Interfaz de Servidor


public final class ServerInterface extends JFrame {
private final JLabel lblTitle, lblMessages; /*, lblMessage*/
//private final JTextField txtClient, txtIp; //txtMessage
private final JTextArea txtMessages;
private final JButton btnLimpiar; //btnSubmit,
private final JPanel panel;
//private final Thread myThread;
private Hilo hilo;

public JTextArea getMenssages(){


return txtMessages;
}

public ServerInterface(String title){


lblTitle = new JLabel("Chat (Servidor)");
lblMessages = new JLabel ("Chat: ");
Henry Pérez García CHAT
8vo – Ingeniería en Sistemas
Aplicaciones Distribuidas
txtMessages = new JTextArea (10, 25);
btnLimpiar = new JButton("Limpiar");
panel = new JPanel();

panel.add(lblTitle);
panel.add(lblMessages); panel.add(txtMessages);
panel.add(btnLimpiar);

this.setBounds(800, 350, 320, 410);


this.add(panel);
this.setVisible(true);
this.setTitle(title);

hilo = new Hilo ("Hilo", this);


hilo.start();
}
}

URL del proyecto-> https://bitbucket.org/Jenruco/henryperez-mediochat/src/master/ChatSocket/

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy