Bom pessoal, fiz um chatzinho simples usando sockets…
Testei aqui no meu computador o servidor e o cliente e consegui
trocar mensagens normal.
Enviei o código do cliente pro meu amigo e fiquei com o do servidor. Rodei o servidor e ele rodou o cliente. Até aqui normal,
mas quando a gente tentou trocar mensagens, elas não eram enviadas e dava um erro no cmd.
Gostaria que alguem me ajudasse a resolver isso.
Aqui os códigos :
Servidor
[code]
import java.net.Socket;
import java.net.ServerSocket;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class Server extends JFrame {
JTextArea saida;
JTextField entrada;
BufferedReader leitor;
PrintWriter w;
private Socket socket1;
public Server() throws Exception {
super("SkyFi Chat 1.0");
Font fonte = new Font("SansSerif", Font.PLAIN, 16);
entrada = new JTextField();
entrada.setFont(fonte);
saida = new JTextArea();
saida.setFont(fonte);
saida.setEditable(false);
JButton botao = new JButton("Enter");
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String t2 = entrada.getText();
w.println(entrada.getText());
w.flush();
saida.append("You say: " + t2 + "\n");
entrada.setText("");
entrada.requestFocus();
}
});
Container recebimento = new JPanel();
recebimento.setLayout(new BorderLayout());
recebimento.add(BorderLayout.NORTH, saida);
recebimento.add(BorderLayout.CENTER, entrada);
recebimento.add(BorderLayout.EAST, botao);
getContentPane().add(BorderLayout.SOUTH, recebimento);
getContentPane().add(BorderLayout.CENTER, saida);
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
configuraRede();
}
public static void main(String[] args) throws Exception {
new Server();
}
public void configuraRede() throws Exception {
ServerSocket servSocket = new ServerSocket(6000);
Socket socket1 = servSocket.accept();
BufferedReader leitor = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
OutputStream out = socket1.getOutputStream();
w = new PrintWriter(out);
String texto = null;
try {
while(true) {
if((texto=leitor.readLine())!=null) {
saida.append("Wallace says: " + texto + "\n");
}
}
} catch (IOException e) {}
}
} [/code]
Cliente
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.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Client extends JFrame {
JTextField entrada;
JTextArea saida;
Socket socket;
PrintWriter w;
BufferedReader leitor;
Client() throws Exception {
super("SkyFi Chat 1.0");
Font fonte = new Font("SansSerif", Font.PLAIN, 16);
entrada = new JTextField();
entrada.setFont(fonte);
saida = new JTextArea();
saida.setEditable(false);
saida.setFont(fonte);
JButton botao = new JButton("Enter");
botao.addActionListener(new EnviarListener());
Container envio = new JPanel();
envio.setLayout(new BorderLayout());
envio.add(BorderLayout.CENTER, entrada);
envio.add(BorderLayout.NORTH, saida);
envio.add(BorderLayout.EAST, botao);
getContentPane().add(BorderLayout.SOUTH, envio);
getContentPane().add(BorderLayout.CENTER, saida);
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
configuraRede();
}
private class EnviarListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String t2 = entrada.getText();
w.println(entrada.getText());
w.flush();
saida.append("You say: " + t2 + "\n");
entrada.setText("");
entrada.requestFocus();
}
}
private void configuraRede() throws Exception {
socket = new Socket("localhost", 6000);
OutputStream out = socket.getOutputStream();
w = new PrintWriter(out);
leitor = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String texto = null;
try {
while(true) {
if((texto=leitor.readLine())!=null) {
saida.append("Lucas says: " + texto + "\n");
}
}
} catch(IOException e) {}
}
public static void main(String[] args) throws Exception {
new Client();
}
}