práctica-04
práctica-04
práctica-04
‘‘Práctica # 4’’
Profesor:
Mtro. Gabriel Dı́az Mirón Mac Donough
1 / 20
Práctica # 4
Objetivo
Elaborar una aplicación distribuida que nos permita realizar operaciones
aritméticas básicas dados 2 números cualesquiera utilizando la
tecnologı́a de ‘‘sockets orientados a conexión’’ implementados con el
lenguaje de programación ‘‘Java’’.
Estructura de la aplicación
Programa ‘‘servidor’’
Servidor.java
Servicio.java
Operacion.java
Programa ‘‘cliente’’
Operacion.java
JFrameCliente.java
TestJFrameCliente.java
2 / 20
Modelo conceptual
3 / 20
Cliente gráfico
4 / 20
Servidor.java
1 /* Servidor . java */
2
3 package mipaquete ;
4
5 import java . io .*;
6 import java . net .*;
7
8 class Servidor {
9 public static void main ( String [] args ) {
10 try {
11 ServerSocket servidor = new ServerSocket (8088);
12 for (;;) {
13 Socket cliente = servidor . accept ();
14 new Thread ( new Servicio ( cliente )). start ();
15 }
16 } catch ( IOException exc ) {
17 System . out . println ( exc . getMessage ());
18 }
19 }
20 }
5 / 20
Servicio.java
1 // Servicio . java
2
3 package mipaquete ;
4
5 import java . io .*;
6 import java . net .*;
7
8 public class Servicio implements Runnable {
9 private static Socket cliente ;
10 Servicio ( Socket cliente ) {
11 Servicio . cliente = cliente ;
12 }
13 @Override
14 public void run () {
15 char ch = ’ \0 ’;
16 double n1 = 0.0 d ;
17 double n2 = 0.0 d ;
18 double rs = 0.0 d ;
6 / 20
Servicio.java
19 try {
20 O b j e c t I n p u t S t r e a m entrada = new O b j e c t I n p u t S t r e a m (
21 cliente . getInputStream ()
22 );
23 try {
24 Object Z = entrada . readObject ();
25 if ( Z instanceof Operacion ) {
26 Operacion Y = ( Operacion ) Z ;
27 ch = Y . getOperador ();
28 n1 = Y . getOperando_01 ();
29 n2 = Y . getOperando_02 ();
30 }
31 } catch ( C l a s s N o t F o u n d E x c e p t i o n exc ) {
32 System . out . println ( exc . getMessage ());
33 return ;
34 }
35 System . out . println ( " Operador : " + ch );
36 System . out . println ( " Operando # 1: " + n1 );
37 System . out . println ( " Operando # 2: " + n2 );
7 / 20
Servicio.java
38 switch ( ch ) {
39 case ’+ ’: rs = n1 + n2 ;
40 break ;
41 case ’ - ’: rs = n1 - n2 ;
42 break ;
43 case ’* ’: rs = n1 * n2 ;
44 break ;
45 case ’/ ’: rs = n1 / n2 ;
46 break ;
47 }
48 DataOutputStream dout = new DataOutputStream (
49 new B u f f e r e d O u t p u t S t r e a m (
50 cliente . getOutputStream ()
51 )
52 );
53 dout . writeUTF ( rs + " " );
54 dout . flush ();
55 } catch ( IOException exc ) {
56 System . out . println ( exc . getMessage ());
57 return ;
58 }
59 }
60 }
8 / 20
Operacion.java
1 // Operacion . java
2
3 package mipaquete ;
4
5 import java . io . Serializable ;
6
7 public class Operacion implements Serializable {
8 private char operador ;
9 private double operando_01 ;
10 private double operando_02 ;
11 public Operacion () {
12 this . operador = ’ \0 ’;
13 this . operando_01 = 0.0 d ;
14 this . operando_02 = 0.0 d ;
15 }
16 public Operacion ( char operador , double operando_01 ,
17 double operando_02 ) {
18 this . operador = operador ;
19 this . operando_01 = operando_01 ;
20 this . operando_02 = operando_02 ;
21 }
9 / 20
Operacion.java
10 / 20
JFrameCliente.java
1 // JFrameCliente . java
2
3 package mipaquete ;
4
5 import java . awt .*;
6 import java . awt . event .*;
7 import java . io .*;
8 import java . net .*;
9 import javax . swing .*;
10
11 public class JFrameCliente extends JFrame implements
12 ActionListener {
13 private JLabel jLabel1 , jLabel2 ;
14 private JTextField jTextField1 , jTextField2 , jTextField3 ;
15 private JButton jButton1 , jButton2 ;
16 private JRadioButton jRadioButton1 , jRadioButton2 ;
17 private JRadioButton jRadioButton3 , jRadioButton4 ;
18 private ButtonGroup ButtonGroup1 ;
11 / 20
JFrameCliente.java
12 / 20
JFrameCliente.java
13 / 20
JFrameCliente.java
14 / 20
JFrameCliente.java
15 / 20
JFrameCliente.java
16 / 20
JFrameCliente.java
17 / 20
JFrameCliente.java
18 / 20
TestJFrameCliente.java
1 // T e s t J F r a m e C l i e n t e . java
2
3 package mipaquete ;
4
5 class T e s t J F r a m e C l i e n t e {
6 public static void main ( String [] args ) {
7 JFrameCliente obj = new JFrameCliente (
8 " Operaciones aritm \ u00E9ticas ... "
9 );
10 obj . setSize (340 ,245);
11 obj . setResizable ( false );
12 obj . setVisible ( true );
13 obj . muestra ();
14 }
15 }
19 / 20
Compilación y salida de resultados
20 / 20