기본적으로 네트워크를 메인 쓰레드에서 돌리면 오류가 발생 합니다.
쓰레드를 생성 해서 돌리셔야 합니다.
쓰레드로 소켓 컨넥션을 맺는 함수를 따로 만드시고 인터페이스를 하나 만드셔서 쓰레드를 돌리는 함수의 생성자로 받으시고 쓰레드내에 소켓 접속 부분을 작성 하신후 소켓이 접속 되었을때 인터페이스를 호출 합니다.
인터페이스 에서는 물론 접속이 되었을때 실행 되는 구현 부를 작성 하셔야 하겠죠..
예)
public interface SocketListener {
public void onSocketConnected()
}
SocketListener socketlistener = new SokcetListener() {
@Override
public void onSocketConnected() {
Log.d("test", "소켓이 접속됨");
//UI 작업의 경우
runOnUiThread(new Runnable() {
//UI 작업
});
}
}
public onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.test)
}
public void ExecuteConnect(final SocketListener socketlistener) {
new Thread(new Runnable() {
//소켓 접속
//소켓 접속 완료후
socketlistener.onSocketConnected();
});
}