Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar JAVA para crear un software de chat

Cómo utilizar JAVA para crear un software de chat

/**

*Programa de chat basado en protocolo UDP

*

* 2007.9.18

* */

//Importar paquete

importar java.awt.*;

importar java.awt.event.*;

importar java.awt.event.ActionEvent;

importar java.awt.event.ActionListener;

importar javax.swing.*;

importar java. net.*;

clase pública Chat extiende JFrame implementa ActionListener

{

//Dirección de transmisión o la dirección de la otra parte

pública static final String sendIP = "127.0.0.1";

//Puerto de envío 9527

public static final int sendPort = 8000;

JPanel p = nuevo JPanel ( );

List lst = new List(); //Visualización del mensaje

JTextField txtIP = new JTextField(18); //Complete la dirección IP

JTextField txtMSG = new JTextField(20); //Completa el mensaje a enviar

JLabel lblIP = new JLabel("Dirección IP:");

JLabel lblMSG = new JLabel("Mensaje:" );

JButton btnSend = new JButton("Enviar");

byte [] buf;

//El objeto que define DatagramSocket que debe manejar excepciones

//Socket para enviar y recibir paquetes de datagramas

DatagramSocket ds = null;

//======== ==== ==Constructor======================

Chat público()

{

CreateInterFace();

//Registrar oyente del cuadro de mensaje

txtMSG.addActionListener(this);

btnSend.addActionListener(this);

intente

{

//Puerto:9527

ds =new DatagramSocket(sendPort);

}

catch(Excepción ex)

{

ex.printStackTrace();

}

/ /== ==========Aceptar mensaje============

//Clase anónima

nuevo hilo (nuevo ejecutable ()

{

ejecución pública vacía()

{

byte buf[] = new byte[1024];

//Indica aceptar paquetes de datagramas

while(true)

{

intente

{

DatagramPacket dp = nuevo DatagramPacket(buf,1024,InetAddress.getByName(txtIP.getText()),sendPort);

ds.receive(dp);

lst.add("Mensaje de ◆" + dp.getAddress().getHostAddress() + "◆"+"Dijo:" + nueva cadena (buf,0, dp.getLength()) /*+ dp.getPort()*/,0);

}

catch(Exception e)

{< / p>

if(ds.isClosed())

{

e.printStackTrace();

}

}

}

}

}).start();

//Cerrar evento de formulario

this .addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent w)

{

System.out.println( "test");

int n=JOptionPane.showConfirmDialog(null,"¿Quieres salir?","Salir",JOptionPane.YES_NO_OPTION);

if(n= =JOptionPane.YES_OPTION)

{

dispose();

System.exit(0);

ds.close() ;//Cerrar objeto ds//Cerrar socket de datagrama

}

}

});

}

//Diseño de interfaz

public void CreateInterFace()

{

this.add(lst,BorderLayout.CENTER);

p >

this.add(p,BorderLayout.SOUTH);

p.add(lblIP);

p.add(txtIP);

p.add(lblMSG);

p.add(txtMSG);

p.add(btnSend);

txtIP.setText(sendIP); /p>

//Color de fondo

lst.setBackground(Color.amarillo);

//Estilo predeterminado de JAVA

this.setUndecorated( true );

this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

this.setSize(600,500);

this.setTitle("〓Sala de chat〓 ");

this.setResizable(false);//El tamaño del formulario no se puede cambiar

this.setLocationRelativeTo(null);//El formulario está centrado

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

this.setVisible(true);

txtMSG.requestFocus();//El cuadro de mensaje recibe el foco

}

//================================Función principal==== ==== =======================

public static void main(String[]args)

{

nuevo Chat();

}

//==================== ===== =========Enviar mensaje================================

//Presiona enter en el cuadro de mensaje para enviar el evento de mensaje

public void actionPerformed(ActionEvent e)

{

//Obtener el contenido de texto

buf = txtMSG.getText().getBytes();

//Determina si el cuadro de mensaje está vacío

if (txtMSG.getText( ).length()==0)

{

JOptionPane.showMessageDialog(null,"El mensaje enviado no puede estar vacío","Preguntar",JOptionPane.WARNING_MESSAGE);

}

else{

prueba

{

Dirección InetAddress = InetAddress.getByName(sendIP);

DatagramPacket dp = new DatagramPacket(buf ,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

ds.send(dp);

}

catch( Excepción ex)

{

ex.printStackTrace();

}

}

txtMSG.setText ("");//Borrar el cuadro de mensaje

//Haga clic en el botón enviar para enviar el evento de mensaje

if(e .getSource()==btnSend)

{

buf = txtMSG.getText().getBytes();

prueba

{

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

}

catch (Excepción ex)

{

ex.printStackTrace();

}

txtMSG.setText("");// Borrar el cuadro de mensaje

txtMSG.requestFocus();

}

}

}