Red de conocimiento informático - Conocimiento del nombre de dominio - Necesitamos urgentemente un código de ventana de chat simple implementado en programación Java

Necesitamos urgentemente un código de ventana de chat simple implementado en programación Java

importar java.awt.*;

importar java.awt.event.*;

importar javax.swing.*;

importar java.net.*;

importar java.io.*;

clase pública ClientDemo01 {

public static void main(String[] args) {

JFrame f=nuevo JFrame("AA");

JPanel p1=nuevo JPanel();

JPanel p2=nuevo JPanel();

JTextArea ta=new JTextArea(15,30);

ta.setEditable(false); //El campo de texto es de solo lectura

JScrollPane sp= new JScrollPane( ta); //Panel de desplazamiento

JTextField tf=new JTextField(20);

JButton b=new JButton("Enviar");

p1 .add(sp);

p2.add(tf);

p2.add(b);

f.add(p1," Centro" );

f.add(p2,"Sur");

f.setBounds(300,300,360,300);

f.setVisible(true);

p>

f.setResizable(false);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Socket socket=null;

BufferedInputStream bis= null;

BufferedOutputStream bos=null;

prueba{

socket=new Socket("192.168.0.4",5000);

bis=new BufferedInputStream(socket.getInputStream());

bos=new BufferedOutputStream(socket.getOutputStream());

MyThread01 mt=new MyThread01(bis ,ta);

mt.start();

}catch(Excepción e){

e.printStackTrace();

}

p>

b.addActionListener(new ButtonActionListener01(tf,ta,bos));

}

}

clase ButtonActionListener01 implementa ActionListener{

JTextField tf;

JTextArea ta;

BufferedOutputStream bos;

public ButtonActi

onListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){

this.tf=tf;

this.ta=ta;

this.bos=bos ;

}

public void actionPerformed(ActionEvent e){

String message=tf.getText();

if(! message.equals("")){

tf.setText(""); //Borrar el cuadro de texto

ta.append("AA:"+message+"\n " ); //Agregar al campo de texto y ajustar

try{

bos.write(message.getBytes());

bos.flush() ;

}catch(Excepción ex){

System.out.println("Error de envío");

}

}

}

}

clase MyThread01 extiende Thread{

BufferedInputStream bis;

JTextArea ta;

public MyThread01(BufferedInputStream bis,JTextArea ta){

this.bis=bis;

this.ta=ta;

}< / p>

public void run(){

intentar{

while(true){

byte[] b=nuevo byte[100]

int length=bis.read(b);

String mensaje=new String(b,0,length);

ta.append(" BB :"+mensaje+"\n");

}

}catch(Exception e){

e.printStackTrace();

}

}

} importar java.awt.*;

importar java.awt.event.*;

importar javax.swing.*;

importar java.net.*;

importar java.io.*;

clase pública ServerDemo01{

public static void main(String[] args){

JFrame f=new JFrame("BB");

JPanel p1=new JPanel();

JPanel p2=new JPanel();

JTextArea ta=new JTextArea(12,30); //Dominio de texto, el primer parámetro es el número de filas, el segundo parámetro es el número de columnas

ta.setEditable(false); //El campo de texto es de solo lectura

JScrollPane sp=new JScrollPane(

ta); //Panel de desplazamiento

JTextField tf=new JTextField(20);

JButton b=new JButton("Enviar");

p1 . agregar(sp);

p2.add(tf);

p2.add(b);

f.add(p1,"Centro" ) ;

f.add(p2,"Sur");

f.setBounds(300,300,360,300);

f.setVisible(true);

p>

f.setResizable(false);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ServerSocket server=null;

Socket = null;

BufferedInputStream bis=null;

BufferedOutputStream bos=null;

prueba{

server=new ServerSocket(5000)

//ta.append("Esperando conexión AA...\n");

socket=server.accept();

/ /ta .append("AA está conectado\n");

bis=new BufferedInputStream(socket.getInputStream());

bos=new BufferedOutputStream(socket.getOutputStream()

MyThread1 mt=new MyThread1(bis,ta);

mt.start();

}catch(Exception e){

e.printStackTrace();

}

b.addActionListener(new ButtonActionListener1(tf,ta,bos));

}

}

clase ButtonActionListener1 implementa ActionListener{

JTextField tf;

JTextArea ta;

BufferedOutputStream bos;

public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){

this.tf=tf;

this.ta=ta;

this .bos=bos;

}

public void actionPerformed(ActionEvent e){

String message=tf.getText(); //Obtener el contenido del cuadro de texto

if(!message.equals("")){

tf.setText(""); //Borrar el cuadro de texto

ta. append("BB:"+message+"\n"); //Agregar al campo de texto y ajustar la línea

try{

> bos.write(message.getBytes());

bos.flush();

}catch(Excepción ex){

System.out. println("¡Error en el envío!");

}

}

}

}

clase MyThread1 extiende Thread{

BufferedInputStream bis;

JTextArea ta;

public MyThread1(BufferedInputStream bis,JTextArea ta){

this.bis =bis;

this.ta=ta;

}

public void run(){

intentar{

while(true){

byte[] b=nuevo byte[100];

int length=bis.read(b);

Mensaje de cadena=nueva cadena(b,0,longitud);

ta.append("AA:"+mensaje+"\n");

}

}catch(Excepción e){

e.printStackTrace();

}

}

}