ENtão, o Chat que fiz, não está recebendo o que é digitado tanto pelo cliente quanto pelo servidor.
[code]package Redes;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ChatCliente extends JFrame {
JTextField textoParaEnviar;
Socket socket;
PrintWriter escritor;
String nome;
JTextArea textoRecebido;
Scanner leitor;
private class EscutaServidor implements Runnable {
@Override
public void run() {
try {
String texto;
while((texto = leitor.nextLine()) != null) {
textoRecebido.append(texto + "\n");
}
} catch(Exception e) {}
}
}
public ChatCliente(String nome) {
super("Chat:" + nome);
this.nome = nome;
Font fonte = new Font("Serif", Font.PLAIN, 26);
textoParaEnviar = new JTextField();
textoParaEnviar.setFont(fonte);
JButton botao = new JButton("Enviar");
botao.setFont(fonte);
botao.addActionListener(new EnviarListener());
Container envio = new JPanel();
envio.setLayout(new BorderLayout());
envio.add(BorderLayout.CENTER, textoParaEnviar);
envio.add(BorderLayout.EAST, botao);
textoRecebido = new JTextArea();
textoRecebido.setFont(fonte);
JScrollPane scroll = new JScrollPane(textoRecebido);
getContentPane().add(BorderLayout.CENTER, scroll);
getContentPane().add(BorderLayout.SOUTH, envio);
configurarRede();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
setResizable(false);
setVisible(true);
}
public class EnviarListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
escritor.println(nome + " : " + textoParaEnviar);
escritor.flush();
textoParaEnviar.setText("");
textoParaEnviar.requestFocus();
}
}
private void configurarRede() {
try {
socket = new Socket("127.0.0.1", 5000);
escritor = new PrintWriter(socket.getOutputStream());
leitor = new Scanner(socket.getInputStream());
new Thread(new EscutaServidor()).start();
} catch (Exception e) {}
}
public static void main(String[] args) {
new ChatCliente("Michael");
new ChatCliente("Francieli");
}
}
[/code]
[code]package Redes;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ChatServer {
List<PrintWriter> escritores = new ArrayList<>();
public ChatServer() {
ServerSocket server;
try {
server = new ServerSocket(5000);
while(true) {
Socket socket = server.accept();
new Thread(new EscutaCliente(socket)).start();
PrintWriter p = new PrintWriter(socket.getOutputStream());
escritores.add(p);
}
} catch (IOException e) {}
}
private void encaminhaParaTodos(String texto) {
for (PrintWriter w : escritores) {
try {
w.println(texto);
w.flush();
} catch(Exception e) {}
}
}
private class EscutaCliente implements Runnable {
Scanner leitor;
public EscutaCliente(Socket socket) {
try {
leitor = new Scanner(socket.getInputStream());
} catch (IOException e) {}
}
@Override
public void run() {
try {
String texto;
while((texto = leitor.nextLine()) !=null) {
System.out.println("Recebeu: " + texto);
encaminhaParaTodos(texto);
}
} catch(Exception e) {}
}
}
public static void main(String[] args) {
new ChatServer();
}
}
[/code]