앞서 프로그래밍했던 클라이언트 소켓은 메인쓰레드에서 서버에 연결을 시도했기 때문에 에러가 발생했다.
그래서 이번에는 쓰레드를 생성하여 접속을 시도하는 방법을 적용해보자.
- 지난글
2021/01/29 - [프로그래밍/Android Java] - 안드로이드 소켓 프로그래밍 / 클라이언트 프로그래밍 #1
안드로이드 소켓 프로그래밍 / 클라이언트 프로그래밍 #1
지난 시간에 파이썬으로 서버를 프로그래밍 했다 2021/01/28 - [프로그래밍/Python] - 파이썬 소켓 프로그래밍 / 서버 프로그래밍 #1 파이썬 소켓 프로그래밍 / 1. 서버 프로그래밍 #1 첫 번째 프로젝트
bagineer.tistory.com
2021/01/31 - [프로그래밍/Android Java] - 안드로이드 프로그래밍 / 멀티쓰레드 #1
안드로이드 프로그래밍 / 멀티쓰레드 #1
지난 프로그래밍에서 안드로이드 디바이스가 소켓을 생성하는 과정에서 문제가 발생했다. 지난 글 참고 2021/01/29 - [프로그래밍/Android Java] - 안드로이드 소켓 프로그래밍 / 클라이언트 프로그래
bagineer.tistory.com
간단한 코드만 추가했으니 설명도 간단히~
onCreate에서는 소켓과 주소 객체만 생성하고 쓰레드에 주소 객체를 전달하여 생성한 소켓이 서버에 연결할 수 있도록 한다.
지난번에 작성한 코드에서 connect 부분만 쓰레드 안에 넣어주면 된다.
MainActivity.java
package com.example.connect;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
private static final String host = "192.168.1.4";
private static final int port = 8080;
private Socket s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s = new Socket();
InetSocketAddress addr = new InetSocketAddress(host, port);
MyThread thread = new MyThread(addr);
thread.setDaemon(true);
thread.start();
}
class MyThread extends Thread {
InetSocketAddress addr;
public MyThread(InetSocketAddress address) {
addr = address;
}
@Override
public void run() {
try {
s.connect(addr);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
이제 코드를 실행하면!
연결되었다!
이제 데이터 파트의 인터페이스를 구현하면 된다
'프로그래밍 > Android Java' 카테고리의 다른 글
안드로이드 프로그래밍 / 멀티쓰레드 #1 (0) | 2021.01.31 |
---|---|
안드로이드 소켓 프로그래밍 / 클라이언트 - 서버 접속 #1 (0) | 2021.01.29 |