[안드로이드스튜디오_문화][Socket 통신]

기말 지하기포·2023년 10월 12일
0

#"안드로이드 스튜디오의 네트워크 기능 구현 방식

socket 네트워크와 Http 네트워크 등을 사용하며, 네트워크와 관련된 코드는 Thread로 운영해야 한다.!!중요!!

#"socket" 통신이란?

서버와 클라이언트가 생성한 각각의 소켓을 통해서(데이터를 소켓에 담아서 주고 받음) 서버와 클라이언트 간의 통신이 이루어진다.

#"socket 통신이 이루어지는 과정"

-1. 서버가 소켓을 생성하고 특정 포트에서 클라이언트의 연결을 기다리는동안, 서버 소켓은 클라이언트의 연결 요청을 수신하기 위한 대기 상태로 들어갑니다.
-[val server = ServerSocket(port)] : 서버가 소켓을 생성하는 부분
-[val socket = server.accept()] : 서버 소켓이 클라이언트의 연결 요청을 수선 하기 위해 대기 상태로 들어가는 부분, 여기서 생성되는 소켓은 "해당 클라이언트와 통신할 수 있는 새로운 소켓"이다.

-2.클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 소켓을 생성하고 서버에 연결을 시도한다.! -[val socket = Socket("172.30.1.36" , 8000)] : 클라이언트가 서버의 ip 주소와 포트 번호를 사용하여 소켓을 생성하고 서버에 연결을 시도하는 부분.

-3.한 번 연결이 성립되면, 클라이언트와 서버는 소켓을 통해 데이터를 주고받을 수 있습니다. 이 소켓을 통해 데이터를 읽고 쓰며 실시간 통신이 이루어집니다.

-4.소켓을 닫는 것은 보통 연결을 종료하고 소켓 자원을 해제하는 작업을 의미합니다. 이 작업은 클라이언트나 서버 양쪽에서 모두 수행할 수 있습니다. 소켓을 닫으면 해당 연결을 끊을 수 있으며, 더 이상 데이터를 주고받을 수 없게 됩니다.

-5.서버와 클라이언트 양쪽에서 소켓을 닫을 수 있으며, 연결은 양쪽에서 소켓을 닫는 순간 종료됩니다.

#사용방법

1.AndroidManifest.xml에 인터넷 권한을 추가해준다.
[uses-permission android:name = "android.permission.INTERNET"]

2.포토 번호를 설정한다. : 왜냐하면 서버가 클라이언트의 연결을 받아들일 때 어떤 포트에서 수신할 것인지를 명시적으로 지정하기 위해서.

  1. 서버의 소켓을 만든다.
    [val server = ServerSocket(port)]
    ServerSocket의 반환값은 socket 객체로서 serverSocket을 의미하는데 이 반환값이 socket 변수에 저장됨가 동시에 클라이언트에서도 자동으로 소켓이 생성된다.
profile
포기하지 말기

0개의 댓글