Red de conocimiento informático - Aprendizaje de programación - Código fuente del paquete Javautil

Código fuente del paquete Javautil

//Este es un programa de chat. Simplemente ejecute Client.java en ECLIPSE. La conexión es: localhost

//Código del servidor,

Mensaje de empaquetado

Importar Java io

Importar Java. . net.*;

Importar Java.util.*;

Servidor de clase pública {

Public static void main(String[] args) lanza una excepción {

System.out.print("Servidor");

socket del servidor = nuevo socket del servidor(8888);

Vector v = nuevo vector()

while(true){

socket sk = socket . aceptar();

flujo de entrada de datos en = nuevo flujo de datos (sk . getinputstream())

flujo de salida de datos = nuevo flujo de salida de datos(sk . get flujo de salida()); hilo (pulg,v).

start();

}

}

}

//Código ServerThread.java

Mensaje del paquete ;

Importar Java .net *; La clase pública ServerThread extiende el subproceso {

DataInputStream en

Vector todo;

Subproceso del servidor público (DataInputStream en, Vector v){

this.in = en

this . all = v;

}

Public void run()

{

mientras(verdadero)

{

prueba{

cadena s 1 = en . (int I = 0; i & ltall . size(); i++)

{

objeto obj = all get(I);

Socket Socket. =(Socket)obj;

flujo de salida de datos = nuevo flujo de salida de datos(socket. get flujo de salida());

escribir utf(s 1);

salida. p>

p>

System.out.print(1);

out .flush();

}

System.out .print("¡Mensaje enviado! ");

} catch(Exception e){ e . printstacktrace();};

}

}

}

//Código ClientFrame.java

Mensaje del paquete;

Importar Java.awt.*;

Importar Java.awt *;

Importar Javax .

La clase pública ClientFrame extiende JFrame para implementar ActionListener{

JButton b 1 = new JButton(" SendMessage ");

JButton b2 = new JButton(" Servidor vinculado");

JTextField t 1 = nuevo JTextField(20);

JTextField T2 = nuevo JTextField(20);

JLabel l=nuevo JLabel ("Ingrese el nombre del servidor :");

Área JTextArea = new JTextArea(10,20);

JPanel p 1 = new JPanel();

JPanel p2 = nuevo JPanel ();

JPanel P3 = nuevo JPanel();

JPanel P4 = nuevo JPanel();

Zócalo;

public ClientFrame()

{

this.getContentPane().

agregar(p 1);

p2.add(new JScrollPane(área));

P3 . b 1);

P4 .añadir(l);

P4 .

p2 . establecer diseño (nuevo diseño de flujo());

P3 . establecer diseño (nuevo diseño de flujo()); );

p 1. establecer el diseño(new BorderLayout());

p1.add("Norte", p2);

p1.add( "Centro", P3);

p1.add("Sur", P4);

b 1. addactionlistener(this);

B2. (this);

this . pack();

show();

}

Operación de anulación pública realizada (evento de operación). e)

{

if(e.getActionCommand().equals("Servidor vinculado"))

{

prueba {

socket=new Socket(t2.getText(), 8888);

B2 .set enable(false);

joptionpane . Conexión exitosa");

flujo de entrada de datos en = nuevo flujo de entrada de datos(socket . getinputstream());

Nuevo hilo de cliente (en, área). start();

}

catch(Exception e1){

joptionpane . showmessagedialog(this, "Error de conexión"); >e 1. printstacktrace();};

}

else if(e.getActionCommand().

igual("SendMessage "))

{

Pruebe {

flujo de salida de datos = nuevo flujo de salida de datos(socket . get flujo de salida());

escribir utf(t 1 . gettext());

t 1 . settext(" "); { y 1. printstacktrace();};

}

}

}

//Código ClientThread.java

Mensaje del paquete;

Importar Java.net.*;

Importar Java.io.*;

Importar javax.swing.*;

Clase pública ClientThread extiende el hilo {

DataInputStream en

área JTextArea;

hilo de cliente público (flujo de entrada de datos en, área JTextArea){

this.in = in

this.area = area

}

Ejecución de vacío público()

{

while(true){

Prueba{

string s = in .

}

catch(Excepción e){ e . printstacktrace();};

}

}

<. p>}

//Código Client.java

Mensaje del paquete;

Cliente de clase pública{

/**

* @param args

*/

Public static void main(String[] args) {

nuevo marco de cliente();

}

}

//Cada fragmento de código es una clase, así que no lo coloque en un archivo. Ejecute Cliente.java.

¡Buena suerte!