olá pessoal,
estou tendo o seguinte problema, após invocar um servidor como thread eu não consigo fechar o socket desse Thread servidor, eu chama o método close a partir de minha classe principal, e ele simplesmente diz socket error e nenhuma menssagem a mais. alguém tem idéia do que seja?
Se e entendi bem vc implementa o socket no método run(){} ? se vc mandar um thread.stop(); ?
sim, no método run, implementando a interface runnable na classe que representa o server.
se usar o método stop ele levanta uma exceção ou erro, relacionada a manuseio inadequado ou indevido.
hum… seu try está desse jeito :
estranho uso inadequado ou indevido
try
{
//
}
catch (SocketException ex)
{
ex.getMessage();
}
catch (IOException ex)
{
ex.getMessage();
}
Abaixo tem o trecho do código que esta no método run proveniente da interface runnable:
ok = true;
while (ok) {
socket.receive(packet);
// retorna verdadeiro se conter alguma informação relevante
ok = this.analisa(new String(packet.getData()));
}
// extrai os dados do pacote
core.c = new String(packet.getData());
core.c = core.c.trim();
} catch (SocketException e) {
JOptionPane.showMessageDialog(null, "
+ e.getMessage());
}[/code]
mas antes disso tudo o método que ativa a thread é chamado por um evento em um button:
[code]SwingUtilities.invokeLater(new Runnable() {
public void run()
{
core.iniciaCaptura();
}
});
que por sua vez esse objeto core em seu método iniciacaptura faz somente isso:
[code]
public void iniciaCaptura() {
if(server==null)
this.server =new DataGramServer(this); //o propio construtor inicia a thread
}[/code]
lembrando que a classe Datagramserver implementa a interface Runnable.