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.