2016-10-13 8 views
0

1つのスレッドでソケットを作成して接続しました。別のスレッドで同じSocketオブジェクトを使用できますか?異なるスレッドから同じソケットを使って作業する

同じ質問は約OutputStreamです。私はそれを別のスレッドを使用することはできますか?

Socket s = null; 
//create and connect cocket 
//... 
OutputStream out = s.getOutputStream(); 

たとえば、別のスレッドからデータを書き込むことはできますか?

out.write(byteArr); 
+0

をしたい、あなたはクラスの変数を使用することができます。 –

+0

もちろん可能ですが、あなたは受信側で決して解けることのないスパゲッティデータの不信心な混乱を作り出します。 – EJP

答えて

0

もちろん、クラスwhitch extend Threadの変数を使用できます。たとえば、次のスレッドを拡張whitch

public class MyClass extends Thread { 
    Socket s; 
    public MyClass(Socket s){ 
     ... 
     this.s = s; 
    } 
    @Override 
    public void run(){ 
     ... your code and usage of socket 
     OutputStream out = s.getOutputStream(); 
     out.write(byteArr); 
    } 
} 

メインクラスにしたり、もちろん

Myclass m = New MyClass(mySocket); 
m.start(); 
関連する問題