안드로이드에서 소켓 통신의 필요성
소켓 통신은 안드로이드 애플리케이션에서 네트워크를 통해 데이터를 주고받는 핵심 기술입니다.
안드로이드에서 소켓 통신을 활용하면 클라이언트와 서버 간의 데이터 교환, 실시간 채팅, 멀티플레이 게임 등 다양한 네트워크 기반 애플리케이션을 개발할 수 있습니다.
소켓 통신을 위한 권한과 런타임 퍼미션 설정 예제
안드로이드에서 소켓 통신을 위해서는 인터넷 권한(android.permission.INTERNET)을 추가해야 합니다.
또한, 런타임 퍼미션을 사용하여 사용자에게 인터넷 접속 권한을 요청해야 합니다.
다음은 소켓 통신을 위한 권한 및 런타임 퍼미션 설정 예제입니다.
// 권한 체크 및 요청
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INTERNET}, INTERNET_PERMISSION_REQUEST);
} else {
// 권한이 이미 허용된 경우
startSocketCommunication();
}
// 권한 요청 결과 처리
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == INTERNET_PERMISSION_REQUEST) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 권한이 허용된 경우
startSocketCommunication();
} else {
// 권한이 거부된 경우
Toast.makeText(this, "인터넷 접속 권한이 필요합니다.", Toast.LENGTH_SHORT).show();
}
}
}
위의 예제에서는 INTERNET_PERMISSION_REQUEST 상수로 정의된 요청 코드를 사용하여 인터넷 접속 권한을 요청하고, 권한 요청 결과를 처리합니다.
서버 소켓 생성 및 listen, bind 예제
안드로이드에서 서버 소켓을 생성하고 연결을 수신하기 위한 예제입니다.
try {
ServerSocket serverSocket = new ServerSocket(5300);
serverSocket.setSoTimeout(9999);
while (true) {
Socket socket = serverSocket.accept();
// 연결된 클라이언트와 통신 수행
}
} catch (IOException e) {
e.printStackTrace();
}
위의 예제에서는 ServerSocket 클래스를 사용하여 포트번호 5300번으로 로컬 서버 소켓을 생성하고, accept() 메서드를 사용하여 클라이언트의 연결을 수신합니다.
오늘은 안드로이드에서 서버 소켓을 생성하여 bind, listen 하는 방법에 대해 알아보았습니다.
다음 포스팅에서는 이제 클라이언트 소켓을 생성하고 서버소켓에 연결 한 후 메세지 통신을 하는 방법에 대해 알아보도록 하겠습니다.
반응형