[Android/Kotlin] 네트워크 - Socket 소켓네트워크

SoyoungLee·2021년 9월 16일
0

안드로이드/코틀린

목록 보기
17/70
post-thumbnail

💌 [안드로이드/코틀린] 네트워크 - Socket 소켓네트워크

💜 네트워크

  • 안드로이드 네트워크 기능 구현 시 소켓 네트워크과 HTTP 네트워크 등 사용

🤍 소켓 네트워크

  • 서버와 클라이언트 간에 서로 연결이 되어 계속해서 데이터를 주고 받는 통신.
  • 온라인 상태를 유지함 (ex/ 온라인 게임)
  • 일반 자바 프로그램에서 구현하는 방법과 동일
  • 사용자 접속 관리 등 많은 기능 구현해야 해서 서버 구현이 어려운 편

🤍 HTTP 네트워크

  • 웹서버를 사용.
  • 웹브라우저가 서버에 접속해서 데이터를 주고 받는 통신.
  • 온라인 상태를 유지하지 않음 (ex/ 대부분의 안드로이드 어플)

💜 Socket 네트워크

IntelliJ SocketServer

New Project > SocketServer - Mainclass.kt

fun main(){
    // 서버 역할을 하기 위해 객체 생성
    val server = ServerSocket(55555)
    print("사용자 접속대기")
    val socket = server.accept()
    println(socket)

    // 서버 종료
   socket.close()
}

Android Studio

📌 Manifest

<uses-permission android:name="android.permission.INTERNET"/>

📌 layout xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="서버 접속하기" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>

내 컴퓨터 IP 주소 확인

cmd > ipconfig

Socket Client

class MainActivity : AppCompatActivity() {
    private var _binding :ActivityMainBinding? = null
    private val binding get() = _binding!!

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        _binding = ActivityMainBinding.inflate(layoutInflater)

        binding.button.setOnClickListener {
            thread {
                // 서버 접속
                val socket = Socket("172.30.1.254",55555)
                Log.d("test","$socket")
                socket.close()
            }
        }
    }
}

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글