2013-02-25 52 views
0

任何人都可以啓發我嗎?我試圖訪問屬於父類(主小程序類)的對象中的套接字。我希望我能爲你做更多的努力。一口一口,但也許我的來源將進一步解釋。試圖在父類中共享一個obejct套接字

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import javax.swing.JApplet; 
import javax.swing.JOptionPane; 

class SocketsC { 

    Socket clientsocket; 
    static PrintWriter out; 
    static BufferedReader in; 

    public void SocketsC() { 

    } 

    public void connectSock() { 

     try { 

      clientsocket = new Socket("localhost", 9900); 
      out = new PrintWriter(clientsocket.getOutputStream(), true); 
      in = new BufferedReader(new InputStreamReader(clientsocket.getInputStream())); 

     } catch (UnknownHostException e) { 

      System.exit(1); 

     } catch (IOException e) { 

      System.exit(1); 
     } 
    } 
} 

class AccessSock { 

    AccessSock() { 

     // Here is where I am trying to access the socket from the mysocks object 
     mysocks.out.println("working"); // This doesn't work... 
    } 

} 

public class main extends JApplet { 

    static SocketsC mysocks; 

    public void init() { 

     createApp(); 
    } 

    public void createApp() { 

     SocketsC mysocks = new SocketsC(); 
     AccessSock sendtext = new AccessSock(); 
    } 
} 

TYIA -Roland

+1

你得到了什麼錯誤? _it不起作用意味着什麼? – 2013-02-25 04:08:53

+1

對不起,沒有向下滾動查看其餘的代碼。在你的具體情況下'main.mysocks.out.println(...)'應該可以工作。 – Supericy 2013-02-25 04:09:13

+0

mysocks無法解析 – 2013-02-25 04:09:21

回答

1

既然你已經定義mysocks爲靜態的,你需要使用className.variable訪問它。

static SocketsC mysocks; 

更改此:

mysocks.out.println("working"); 

main.mysocks.out.println("working"); 

這應該工作。由於您的班級中沒有變量mysocks。這是拋出錯誤。

+0

這很有效! Tyvm我的朋友。祝一切順利! – 2013-02-25 04:18:37

0

從你的代碼mysocks.out.println("working");我知道你要訪問println方法
這樣你就可以直接做,使用

SocketsC.out.println("working"); 
0

嘗試...

public class main extends JApplet { 
    //existing code 

    public void createApp() { 
     mysocks = new SocketsC(); 
     AccessSock sendtext = new AccessSock(mysocks); 
    } 

class AccessSock { 

    AccessSock(SocketsC mysocks) { 
    // Here is where I am trying to access the socket from the mysocks object 
    mysocks.out.println("working"); // This doesn't work... 

    } 
}