E ai galera! blz! Minha dúvida e meu grande problema é o seguinte: é natural uma aplicação cliente/servidor usando socket deixar o servidor lento, mesmo tendo apenas um cliente conectado?? Minha aplicação envia datagrams para os clientes, porém quando eu conecto qualquer cliente na minha máquina servidor ela trava geral e mesmo quando eu fecho o cliente ela ainda fica travada. E agora qual é problema?? segue abaixo o código que conecta o cliente, vejam se eu estou erando em alguma coisa??
Falow’s e desde já agradeço!!
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Server extends JInternalFrame implements MessageListener{
private JTextField enterField;
private JTextArea displayArea,nickArea;
private ObjectOutputStream output;
private ObjectInputStream input;
private ServerSocket server;
private Socket connection;
private final String MESSAGE_SEPARATOR = ">>>";
public Server(){
setTitle("Servidor");
Container container= getContentPane();
enterField= new JTextField();
enterField.setEnabled(false);
enterField.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
messageReceived("wso",e.getActionCommand());
}
}
);
container.add(enterField, BorderLayout.NORTH);
displayArea= new JTextArea();
displayArea.setEditable(false);
container.add(new JScrollPane(displayArea),BorderLayout.CENTER);
nickArea= new JTextArea(10,10);
nickArea.setEditable(false);
nickArea.append("");
container.add(new JScrollPane(nickArea),BorderLayout.EAST);
setSize(300,150);
}
public void runServer(){
try{
server= new ServerSocket(5000,100);
displayArea.append("Servidor conectando a porta 5000 ..." );
while(true){
Socket clientSocket = server.accept();
new ReceivingThread(this,clientSocket).start();
System.out.println("O filha da mãe da máquina "+ clientSocket.getInetAddress() +" se conectou");
enterField.setEnabled(true);
}
}
catch(IOException ioException){
ioException.printStackTrace();
}
}
public void messageReceived(String from,String message){
String completeMessage = from + MESSAGE_SEPARATOR + message;
displayArea.append("\n" + from+MESSAGE_SEPARATOR+message);
displayArea.setCaretPosition(displayArea.getText().length());
new MulticastSendingThread(completeMessage.getBytes()).start();
}
public static void main(String args[]){
Server application= new Server();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.runServer();
}
}