Red de conocimiento informático - Conocimiento sistemático - Escribir un programa java

Escribir un programa java

¿Es este el caso? En el extremo izquierdo está la ventana de respuesta del servidor, en el medio está el servidor que monitorea a las personas del chat y la lista vinculada almacena las personas que ingresan. A la derecha está el envío del chat del cliente. ventana de mensaje. Si envía un mensaje desde la derecha, el servidor puede aceptarlo y, como se muestra a la izquierda, el servidor de la izquierda también puede responder mensajes al cliente.

Código de cliente:

importar java.io.*;

importar java.net.*;

importar java.awt. *;

importar java.awt.event.*;

importar javax.swing.*;

importar javax.swing.JButton;

ChatClient de clase pública extiende JFrame

{

privado estático final largo serialVersionUID = 1L;

JTextArea ta = new JTextArea("Puedes pasar este Cliente chat grupal!" + "\n" + "¿Enviar tecla de acceso directo? ALT+ENTER \n");

TextArea tf = new TextArea(3, 21);

JButton btn = new JButton("Enviar");

JPanel jp = new JPanel();

Socket s = null;

public ChatClient() lanza una excepción

{ ?this.setLayout(new BorderLayout(10, 10)); ?this.add(ta, BorderLayout.CENTER); ?jp.add(btn, BorderLayout.SOUTH); tf, BorderLayout.SOUTH); ?this.add(jp, BorderLayout.EAST); ?btn.addActionListener(new ActionListener() ?{ ?public void actionPerformed(ActionEvent ae) ?{ ?try ?{ ?String sSend = tf. getText(); ?if (sSend.trim().length() == 0) ?return; ?ChatClient.this.send(sSend); ?tf.setText(""); hágalo usted mismo:" + "\n"); ?ta.append(sSend + "\n"); ?} ?catch (Exception e) ?{ ?e.printStackTrace(); ?} ?} ?}); ? btn.setMnemonic(KeyEvent.VK_ENTER); ?this.addWindowListener(new WindowAdapter() ?{ ?public void windowClosing(WindowEvent e) ?{ ?System.exit(0); ?} ?}); , 400, 500); ?setVisible(verdadero); ?tf.requestFocus(); ?intenta ?{ ?s = nuevo

cket("localhost", 8888); ?} ?catch (Excepción e) ?{ ?ta.append("¡Lo siento! No se puede conectar con el servidor" + "\n"); ()) ).start();

}

public void send(String str) lanza una excepción

{ ?DataOutputStream dos = new DataOutputStream(s. getOutputStream() ); ?dos.writeUTF(str);

}

public void desconectar() lanza una excepción

{ ?s.close();

}

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

{ ?JFrame.setDefaultLookAndFeelDecoated(true); ?BufferedReader br = new BufferedReader( nuevo InputStreamReader (System.in)); enviar(str ); ?str = br.readLine(); ?} ?cc.disconnect();

}

clase ReceiverThread implementa Runnable

{ ?public void run() ?{ ?if (s == null) ?return; ?intenta ?{ ?DataInputStream dis = new DataInputStream(s.getInputStream()); ?String str = dis.readUTF(); str != null && str.length() != 0) ?{ ?ChatClient.this.ta.append(str + "\n"); ?str = dis.readUTF(); e) ? { ?e.printStackTrace(); ?} ?}

}

}

Código de servidor:

importar java .awt .BorderLayout;

importar java.awt.Button;

importar java.awt.Frame;

importar java.awt.TextArea;

importar java.awt.event.ActionEvent;

importar

java.awt.event.ActionListener;

importar java.awt.event.WindowAdapter;

importar java.awt.event.WindowEvent;

importar java. io.DataInputStream;

importar java.io.DataOutputStream;

importar java.io.IOException;

importar java.net.ServerSocket;

importar java.net.Socket;

importar java.util.ArrayList;

importar java.util.Collection;

importar java.util. Iterador;

importar javax.swing.JFrame;

importar javax.swing.JTextArea;

La clase pública ChatServer extiende JFrame

{

privado estático final largo serialVersionUID = 1L;

JTextArea ta = new JTextArea();

ServerSocket server = null;

Colección cClient = new ArrayList();

public ChatServer(puerto int) lanza una excepción

{ ?server = new ServerSocket(puerto); BorderLayout.CENTER); ?setBounds(200, 200, 300, 450); ?this.addWindowListener(new WindowAdapter() ?{ ?public void windowClosing(WindowEvent e) ?{ ?System.exit(0); ?} ?} ); ?setVisible(true);

}

public void startServer() lanza una excepción

{ ? while (true) ?{ ?Socket s = servidor .accept(); ?cClient.add(new ClientConn(s)); ?ta.append(s.getInetAddress().getHostName() + "Introducir" + " " + "Número de puerto" ?+ s.getPort() ?ta.append("\n" + "El número total actual de personas al frente: " + cClient.size() + "\n\n"); p>

@SuppressWarnings("serial")

clase ClientConn extiende Frame implementa Runnable, Acti

onListener

{ ?TextArea ta1 = nulo; ?TextArea ta2 = nulo ?Botón btn = nulo ?Socket s = nulo ?public ClientConn(Socket s) ?{ ?ta1 = nuevo TextArea(3, 30); ?ta2 = new TextArea(2, 15); ?btn = nuevo Botón("Enviar"); ?this.setLayout(new BorderLayout()); ?this.add(ta1, BorderLayout.CENTER); .add(ta2, BorderLayout.SOUTH); ?this.add(btn, BorderLayout.EAST); ?this.setSize(300, 200); ?this.setVisible(true); getInetAddress().getHostName() + "puerto" ?+ s.getPort()); ?this.s = s;(new Thread(this)).start(); ?public void actionPerformed(ActionEvent e) ?{ ?try ?{ ?DataOutputStream dos = new DataOutputStream(s.getOutputStream()); ?dos.writeUTF("Servidor:\n" + ta2.getText() + "\n" ); ?ta1.append("Servidor:\n" + ta2.getText() + "\n"); ?ta2.setText(""); ?} ?catch (IOException E)?{ ?} ?} ? public void send(String str, String st) lanza IOException ?{ ?DataOutputStream dos = new DataOutputStream(s.getOutputStream()); ?dos.writeUTF(st + "say:\n" + str); disponer() ?{ ?intentar ?{ ?// this.setVisible(false); ?super.dispose(); ?ta.append(s.getInetAddress().getHostName() + "salir" + "\n") ?if (s != null) ?s.close(); ?cClient.remove(this); ?ta.append("Número actual de personas en línea: " + cClient.size() + "\n\n" ); ?} ?catch (Excepción e) ?{ ?e.printStackTrace

(); ?} ?} ?public void run() ?{ ?intenta ?{ ?DataInputStream dis = new DataInputStream(s.getInputStream()); ().getHostName(); ? while (str != null && str.length() != 0) ?{ ?for (Iterator it = cClient.iterator(); it.hasNext();) ?{ ?ClientConn cc = (ClientConn) it.next(); ?if (this!= cc) ?{ ?cc.send(str, st?} ?} ?ta1.append(st + "Di:\n"); + str + "\n"); ?str = dis.readUTF(); ?} ?this.dispose(); ?} ?catch (Excepción e) ?{ ?this.dispose(); p>

}

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

{ ?JFrame.setDefaultLookAndFeelDecoated(true); ?ChatServer cs = new ChatServer(8888) ?cs.startServer();

}

}