Odwołanie się do obieku socket

0

Witam,

Tworzę prostego klienta chat na Androida.

Mój kod:

    public class Rejestracja extends AppCompatActivity {

    Button b1;
    EditText et1;
    EditText et2;
    EditText et3;
    TextView t2;
    TextView t3;
    TextView t4;

    private static final int SERVERPORT = 7000;
    private static final String SERVER_IP = "192.168.3.133";
    Socket socket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rejestracja);
        b1=findViewById(R.id.button);
        et1=findViewById(R.id.editText);
        et2=findViewById(R.id.editText2);
        et3=findViewById(R.id.editText3);
        t2=findViewById(R.id.textView2);
        t3=findViewById(R.id.textView3);
        t4=findViewById(R.id.textView4);
        new Thread(new ClientThread()).start();
        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                String strL=et1.getText().toString();

                try {
                    socket = new Socket(SERVER_IP, SERVERPORT);
                    PrintWriter out  = new PrintWriter(new BufferedWriter(
                            new OutputStreamWriter(socket.getOutputStream())),
                            true);
                    out.println(strL);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        });
    }

    class ClientThread implements Runnable{

        @Override
        public void run() {

            try {
                InetAddress serverAddr =  InetAddress.getByName(SERVER_IP);
                socket = new Socket(serverAddr, SERVERPORT);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Generalnie problem jest w tym, że w klasie ClientThread jest tworzony obiekt socket. Natomiast w funkcji onClick() mamy odwołanie do obiektu socket, jednak w tym przypadku ma on wartośc null. Jak odwołać się do wywołania socket z klasy wątku w metodzie onClick()?

0

A nie możesz sobie tam stworzyć obiektu ClientThread czy co?

0

Jednak podpytam: tam to znaczy gdzie w metodzie?

 public void onClick(View v) {
                Log.i("aaaaaaaaaaaaaaaa","działa klik");
                String strL=et1.getText().toString();
                new Thread(new ClientThread()).start();
                try {
                    //socket = new Socket(SERVER_IP, SERVERPORT);
                    PrintWriter out  = new PrintWriter(new BufferedWriter(
                            new OutputStreamWriter(socket.getOutputStream())),
                            true);
                    out.println(strL);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Log.i("aaaaaaaaaaaaaaaa",""+strL);

            }
        });

1 użytkowników online, w tym zalogowanych: 0, gości: 1