Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIVERSIDAD NACIONAL DE
UCAYALI
Facultad de Ingeniera de Sistemas y de Ingeniera Civil
Escuela Profesional de Ingeniera de Sistemas
Curso
: Sistemas Distribuidos
Tema
Docente
Alumnos
Ciclo
: VIII
Cliente
Primero crea un objeto del tipo Socket que pertenece a la clase
java.net.Serversocket, despus se obtiene un objeto InetAddress, y usando el
mtodo getByName le indicamos donde se va a ejecutar el cliente, en nuestro
caso indicamos que ser en localhost.
Finalmente creamos un objeto de tipo socket al que pasaremos la direccin
donde se est ejecutando el cliente, y el puerto por donde se conectar al
servidor.
import java.sql.Connection;
import java.sql.DriverManager;
public class dbManager {
private
final
String
url="jdbc:mysql://localhost:3306/chat?zeroDateTimeBehavior=convertToN
ull";
private final String driver="com.mysql.jdbc.Driver";
private final String user="root";
con.close();
}catch (Exception e){error=e.toString();}
}
}
CLASE inicio:
package distribuidos_socket;
import javax.swing.JOptionPane;
public class inicio {
public static usuario nv;
public static void main(String[] args) {
NewJFrame.cliObje.setIpUsuario(
JOptionPane.showInputDialog("Ingrese su IP:"));
NewJFrame.cliObje.setNick(JOptionPane.showInputDialog("Ingrese
su Nick"));
new NewJFrame().setVisible(true);
}
Para la parte del cliente se le pedir que ingrese una ip valida:
CLASE cliente
package distribuidos_socket;
import java.io.Serializable;
public class Cliente implements Serializable{
private String nick;
private String ip;
private String mensaje;
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
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;
}
}
package distribuidos_socket;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class NewJFrame extends javax.swing.JFrame implements Runnable {
/**
* Creates new form NewJFrame
*/
public NewJFrame() {
initComponents();
Thread hilo=new Thread(this);
hilo.start();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
djfhdjfd.setText("Nick");
jLabel2.setText("Ip");
jLabel3.setText("Mensaje");
txtMensajes.setColumns(20);
txtMensajes.setRows(5);
jScrollPane1.setViewportView(txtMensajes);
btnEnviar.setText("Enviar");
btnEnviar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEnviarActionPerformed(evt);
}
});
btnEnviar.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
btnEnviarKeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
btnEnviarKeyTyped(evt);
}
});
jButton1.setText("Limpiar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout
jPanel1Layout
new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.
Alignment.LEADING)
.addComponent(jButton1)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING, false)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
392, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(djfhdjfd)
.addComponent(jLabel3)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE,
10,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(39, 39, 39)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING, false)
.addComponent(txtNick)
.addComponent(txtIp)
.addComponent(txtMensaje,
javax.swing.GroupLayout.DEFAULT_SIZE, 181, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnEnviar))))
.addContainerGap(36, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(djfhdjfd)
.addComponent(txtNick,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(txtIp,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
.addComponent(jLabel3)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(txtMensaje,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnEnviar)))
.addGap(26, 26, 26)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
146,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)
.addComponent(jButton1)
.addContainerGap(19, Short.MAX_VALUE))
);
javax.swing.GroupLayout
layout
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
new
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
flujo=new
ObjectOutputStream(cliente.getOutputStream());
flujo.writeObject(cliObj);
cliente.close();
} catch (Exception ex){
System.out.println(ex.getMessage());
}
}
}
txtMensaje.setText(null);
txtMensajes.setText(null);
txtNick.setText(null);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
*
For
details
see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for
(javax.swing.UIManager.LookAndFeelInfo
info
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.lo
gging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnEnviar;
private javax.swing.JLabel djfhdjfd;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField txtIp;
private javax.swing.JTextField txtMensaje;
private static javax.swing.JTextArea txtMensajes;
private javax.swing.JTextField txtNick;
// End of variables declaration
@Override
public void run() {
try {
ServerSocket serv=new ServerSocket(9090);
Socket cliente;
Cliente cliObj;
while(true)
{
cliente=serv.accept();
ObjectInputStream
flujo=new
ObjectInputStream(cliente.getInputStream());
cliObj=(Cliente)flujo.readObject();
txtMensajes.append("\n
"+cliObj.getNick()+":
\n
"+cliObj.getMensaje());
cliente.close();
}
Clase conversacin
package distribuidos_socket;
import java.util.ArrayList;
import java.util.Calendar;
public class Conversacion {
Para el servidor:
package distribuidos_socket;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
ServerSocket serv=null;
public NewJFrameServer() {
initComponents();
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
txtMensaje.setColumns(20);
txtMensaje.setRows(5);
jScrollPane1.setViewportView(txtMensaje);
btnSalir.setText("Salir");
btnSalir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSalirActionPerformed(evt);
}
});
jButton1.setText("Limpiar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout
jPanel1Layout
new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnSalir))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(139, 139, 139)
369,
.addComponent(jLabel1))
.addComponent(jButton1))
.addContainerGap(41, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(25, 25, 25)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
.addComponent(btnSalir)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(jButton1)
.addContainerGap(19, Short.MAX_VALUE))
249,
);
javax.swing.GroupLayout
layout
new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
txtMensaje.setText(null);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default
look and feel.
*
For
details
see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for
(javax.swing.UIManager.LookAndFeelInfo
info
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrameServer.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrameServer.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrameServer.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrameServer.class.getName()).log(java
.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrameServer().setVisible(true);
}
});
}
@Override
public void run() {
try{
serv= new ServerSocket(9083);
String nick,ip,mensaje;
Socket cli;
usuario CliObj;
while(true){
cli=serv.accept();
ObjectInputStream flujo=new ObjectInputStream(cli.getInputStream());
CliObj=(usuario) flujo.readObject();
nick=CliObj.getNick();
ip=CliObj.getIpUsuario();
mensaje=CliObj.getMensaje();
txtMensaje.append("\n
"+nick+"
Le
dice
a:
"+ip+"\n
Mensaje:
"+mensaje);
Socket cliEnvia=new Socket(ip,9082);
ObjectOutputStream
ObjectOutputStream(cliEnvia.getOutputStream());
flujoEnvia.writeObject(CliObj);
cli.close();
}
flujoEnvia=new
Y luego enva al receptor al mismo tiempo el mensaje enviado del receptor sale
en su text rea (mensaje), la cual se mostrar en el panel del cliente:
IpUsuario varchar(20)
IpRecepcion
Puerto
Nick varchar(20)
Mensaje varchar(244)
Fecha varchar(45)