Java.net - Erro na Leitura de um socket

Erro de compilacao:
JIrc.java:151: cannot resolve symbol
symbol: variable sock
BufferedReader rd = new BufferedReader(new InputStreamReader(sock) );
^
1 error

Obs: sou iniciante em sockets
A indentacao ta meio tosca, mas ta valendo.

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.net.*;
import java.io.*;


public class JIrc extends JFrame 
{
   
   
  public JTextArea conteudo;
  public JTextField entrada;
  public JLabel label_entrada;
  public JButton conectar,sair,limpar;
  public JScrollPane rolagem;
   
   /* @author Marcelo Santos Araujo
    * @version 1.0(beta)
    * */
   
   
   
  public JIrc() 
     {   
	
	super("JIrc - Irc Client");
	
	
	conectar = new JButton("Connect");
	sair = new JButton("Quit");
	limpar = new JButton("Clear mainscreen");
        conteudo = new JTextArea(15,40);
	conteudo.setLineWrap(true);
	conteudo.setBackground(Color.LIGHT_GRAY);
	conteudo.setForeground(Color.black);
	rolagem = new JScrollPane(conteudo);
	label_entrada = new JLabel("Irc Server:");
	entrada = new JTextField(30);
	
	JPanel painel = new JPanel();
	painel.add(conteudo);
	painel.add(label_entrada);
	painel.add(entrada);
	painel.add(conectar);
	painel.add(limpar);
	painel.add(sair);
	
          Container container = getContentPane();
	container.add(painel);
	
	
       
	
	
	
	
	
	
	
	setVisible(true);
	setSize(400,400);
	setDefaultLookAndFeelDecorated(true);
	
     }
   
   
    public void setConnection() 
     {	
	
          try 
	  {	
	       InetAddress addr = InetAddress.getByName(entrada.getText());     
	       int port = 6667;
	       SocketAddress sockaddr = new InetSocketAddress(addr,port);
	       Socket sock = new Socket();
	     
	     
	     int timeout = 5000;
	     
	     sock.connect(sockaddr,timeout);
	      
	   
	  }
	
	
	catch (UnknownHostException e1)
	  {
	     
	     
	     conteudo.append("Unknown host errors:
" + e1 + "
");
	  }
	
	
	catch(SocketTimeoutException e2)
	  {
	     
	     conteudo.append("TimeOut errors:
" + e2 + "
");
	     
	  }
	
	catch(IOException e3)
	  {
	     
	     conteudo.append("Input/Output errors:
" + e3 + "
");     
		       
	     
     	  }
    




















 	      
     }
   
   

   public void setOk() 
     {
	
	
	
         conectar.addActionListener(new ActionListener() 
	  {	
				       
	      public void actionPerformed(ActionEvent event1)
	       {			       
		  
		  
	
		  setConnection();
	          
                       try
    {	    
	  BufferedReader rd = new BufferedReader(new InputStreamReader(sock) );
	         
	             String str;
	
       while ((str = rd.readLine()) != null) 
       {
		  
		          conteudo.append(str);
       }
	     
	             rd.close();
    }
	 catch (IOException e4) 
	 {
	     
             conteudo.append("Errors: 
" + e4 + "
");	    	   
	 }

    }
	     
				       			       
	  });
				       
	
	
	
     }
   
   
   public void setQuit() 
     {
	
	
	
        sair.addActionListener(new ActionListener() 
	 {
	    
	    public void actionPerformed(ActionEvent even2)
	      {
		 
		 
                 System.exit(0);		 
	      }
	 });
	
   	
	
	
     }
    
   
   public void setClear()
     {
	
       limpar.addActionListener(new ActionListener() 
       {	
				   
				   
           public void actionPerformed(ActionEvent event3)
	    {				   
	       
	        entrada.setText("");
	        conteudo.setText("");
	       
	       
	    }
	 
				   
       });
				
     }
   
   
   
   
public static void main(String args[]) //throws IOException
     {   
       JIrc irc = new JIrc();	
	
          irc.setOk();	
	  irc.setQuit();
          irc.setClear();	
	
     }
   
   
}

Obrigado,

Marcelo Araujo

cannot resolve symbol: variable sock

A variavel ‘sock’ nao esta declarada.

cv,

sock = new Socket();
esta declarada.

Brigue com o seu compilador, nao comigo :smiley:

Voce colocou no escopo errado :wink:

Esta declarada como uma variavel local e não de classe, logo o outro método não “encherga” a variavel.
Por exemplo:

class Exemplo {
 Socket sock;
  public void metodo1() {
     sock = new Socket();
  }

  public void metodo2() {
     sock.connect(...);
  }
class Exemplo {
  public void metodo1() {
     Socket  sock = new Socket();
  }

  public void metodo2() {
     sock.connect(...);
  }

No segundo exemplo, metodo2 não tem como acessar a variavel declarada em metodo1 pelo fato de ser local.

percebi isso tambem,

valeu ae louds.

public Socket sock;
public InetAddress addr;